2014-01-08 147 views
-2

好了,所以無法找出爲什麼當我輸入的1, 2, 100, 3, 9, 22, 58
以下代碼返回一個數組100
(這只是一個代碼段,這是一個代碼較大塊的一部分)找到最大數量?

double result = numbers[0]; 
for (int i = 0; i < numbers.length; i++) 
    if (numbers[i] > result) 
     result = numbers[i]; 
System.out.println("The max value is " + result); 

但是,如果沒有對大括號如果它打印數字通往最大的一個,從第一個開始的列表,在這種情況下:12100

double result = numbers[0]; 
for (int i = 0; i < numbers.length; i++) 
    if (numbers[i] > result) { 
     result = numbers[i]; 
     System.out.println("The max value is " + result); 
    } 

感謝您提前給予的幫助,這讓我發瘋,這可能很愚蠢。

+4

1)所有的塊都應該用大括號括起來,所有的,甚至是一個線塊。 2)學會正確縮進。你不好的縮進和缺乏大括號是讓你失望的(我希望)。 –

+1

如果你不明白你的程序在做什麼,我建議你在你的調試器中單步執行代碼。 –

回答

4

在第二個示例中,您將在if語句內進行打印,因此每次它遍歷列表時,都會打印出結果。在第一個例子中,它是在if之後執行的,因爲你不使用大括號。如果你沒有在括號後面加上括號,那麼它只會假設該語句中包含的下一行。

在繼續編碼之前,您應該學習好的編碼實踐。當你的代碼更加複雜時,它會幫助你避免這樣的事情。另外,單步執行代碼會告訴你到底發生了什麼,所以你還應該學習如何使用調試器。

2

if (numbers[i] > result) 
     result = numbers[i]; 
System.out.println("The max value is " + result); 

if塊沒有括號僅包括立即下一行。

相同的爲for塊。

說明。

for沒有大括號,所以它只是遍歷下一個代碼塊,即if塊。

if塊沒有括號要麼,所以它會通過緊跟其後的塊/說法是

result = numbers[i]; 

如此有效的System.out.println("The max value is " + result);話說出來無論是在第一種情況下的塊,因此執行的迭代只有一次。

0

在第一種情況下,結果將被設置爲當前編號(number[i]),如果該編號大於之前的值result。這會將結果更新爲迄今爲止發現的最大值,只要該結果大於設置爲(numbers[0])的第一個值即可。如果您在循環結束時打印此信息,則會打印出陣列中找到的最大數字(最大值)。在第二種情況下,當您通過numbers數組時,您始終打印出迄今爲止在數組中發現的最大數字 - 因此,您將按升序打印數字。

0

在第一個示例中,System.out.println僅在塊的結尾處執行一次。在第二個例子中,每次遇到一個新的最高等號時執行它。

添加括號來兩個例子應該賺差價明顯:

for (int i = 0; i < numbers.length; i++) { 
    if (numbers[i] > result) { 
     result = numbers[i]; 
    } 
} 
System.out.println("The max value is " + result); // only ever called once 

VS

for (int i = 0; i < numbers.length; i++) { 
    if (numbers[i] > result) { 
     result = numbers[i]; 
     System.out.println("The max value is " + result); // called whenever numbers[i] > result 
    } 
} 
0

,只要你找到一個比你得到的結果與交換,並同時打印出來一個更大的數字。

System.out.println(「最大值爲」+結果);

應位於for循環之後(花括號外),因此當循環結束時,只有最大的數字將被打印出來。

0
double result = numbers[0]; 
for (int i = 0; i < numbers.length; i++) 
{ 
    if (numbers[i] > result) //this will check each array members to find the max 
{ 
     result = numbers[i];//assign the array member if it is the largest 
} 
System.out.println("The max value is " + result); //print the max value of the array 
0

我會檢討如何通過代碼調試步驟爲BobbyD17建議。

對於月食,請參考link

對於netbeans