2013-09-21 33 views
-1

嗨我正在嘗試編寫一個Java程序,它接受來自用戶的許多輸入並輸出最大值,最小值和平均值而不使用數組。不使用數組無限制輸入

  • **這是指令:

寫在控制檯上讀取值,之後輸出一些統計 量輸入組數字的程序LoopStatistics。如果沒有輸入正數,則程序 不打印輸入的號碼。 作業 用戶可以根據需要在控制檯上輸入許多正浮點數。零(或一個負數)表示輸入結束(不能輸入更多數字)。輸入最小號進入(分鐘) 數量最多輸入(最大值) 所有數字的平均值進入 顯示 程序後(平均)**

public class LoopStatistics { 

    public static void main(String[] args) { 
     char ch; 
     int n=0; 
     TextIO.putln("enter numbers:"); 
     for (ch = 'a'; ch <= 'z'; ch++){ 
      n = ch; 
      n =TextIO.getInt(); 
      while (n>0){ 
       ch++; 
      } 
      break; 
     } 
     TextIO.put(n); 
    } 
} 
+0

您的循環只能執行一次。你究竟在努力完成什麼?你的問題不清楚。你需要那些char的什麼? '而'一塊應該給無限循環。該計劃似乎與您的問題中的陳述無關。 – sashkello

+0

[用用戶輸入計算平均值]的可能重複(http://stackoverflow.com/questions/10887498/calculate-average-with-user-input) – sashkello

回答

1

不存儲所有用戶條目,只保留最小值,最大值,運行總數和條目數。

+0

嗯。 Steenslag,我想你只是給了我一個想法 –

+0

我將編輯代碼並再次回來。謝謝 –

+0

這是我想出的新代碼。但它並不按照我希望它工作的方式工作。最小最大。它不能很好地執行 –

0

讓這裏分析代碼:

for (ch = 'a'; ch <= 'z'; ch++){ 

     n = ch;    // the value of n is now equal to the value of ch 
     n =TextIO.getInt(); // now the value of n is changed to the value received by the TextIO.getInt() 
     while (n>0){   
      ch++; 
     } 
     break;    // your loop stops here in it's first iteration 
    } 
    TextIO.put(n);    

一個簡單的問題在這裏,是什麼在這段代碼中使用的變量「CH」的!?

現在,如果你只是想檢查,如果用戶輸入小於或等於零,在循環爲什麼不能用一個簡單的if語句的,如果這是真的,休息,否則繼續!?

0

編輯

現在你的問題是你設置了一堆你不需要的變量。老實說,你的問題不是編程問題,而是一個基本邏輯問題。

您無法將您的「最小」檢查與「最大」檢查結合起來。相反,你要像

int numbersEntered = 0; 
double minimumNumber = 0; 
double maximumNumber = 0; 

while(userIsEnteringNumbers) { 
    if(numberEntered < minimumNumber) { 
     minimumNumber = numberEntered; 
    } 

    if(numberEntered > maximumNumber) { 
     maximumNumber = numberEntered; 
    } 

    ++numbersEntered; 
} 

這裏有幾件事,沒有任何意義,但我假設,通過「不使用數組」這包括諸如設置

在在這種情況下,您不想存儲用戶輸入,只需輸入用戶輸入的最低值,最高值和數值。計算用戶完成輸入值後的平均值。

在循環方面,你想要麼循環多次的用戶選擇(在這種情況下,循環之前得到這個信息,然後初始化你與它循環)或要循環下去,直到用戶輸入一個特定的值(例如一個新行或任何不是數字的東西)。

現在到代碼中的問題,您所提交..

for (ch = 'a'; ch <= 'z'; ch++) 

你爲什麼要使用字母循環圓?你似乎沒有使用任何需要字母的東西,所以只需使用數字來簡化事情。您可以在for循環初始化變量,如

for (int i = 0; i < 10; ++i) 

儘量避免使用重複的變量,它會使你的代碼難以閱讀。

n = ch; 
n =TextIO.getInt(); 

您將ch的值賦值爲n,然後立即爲其指定TextIO.getInt()的值。聲明'n = ch'可能不在那裏。如果您想對其執行某種操作,請使用+ =, - =,* =/=

while (n>0){ 
     ch++; 
    } 

即基本上或者是一個無限循環或永遠不會取決於n的值達到,一個循環。你增加的唯一變量是ch,這意味着n總是大於0,你的代碼將永遠不會再進一步​​

嘗試執行我在答案開始時提出的解決方案,如果你還在卡住,發回

+0

請我更新我的代碼。如果你可以看看它。最大值和最小值執行得不好 –

+0

@Michael。我已經更新了我的答案,以解釋您的修改。我不知道我能告訴你,如果沒有給你解決方案,我還有多少,因爲你a)要求我不要在原來的帖子中,b)你的問題似乎是功課,將是一件壞事 – Naravia