2013-10-23 57 views
1

我的程序需要多個等級(從一個記事本文件),然後多個等級百分比,並將它們保存爲字母等級。然後我打印出多少個A,B等。我還需要找到最高和最低的成績。將編號保存到循環內的變量JAVA

我想要做的是在我的成績檢查循環結束時,將當前成績保存到一個變量中,以便我可以稍後比較所有變量以查看哪些成績最高和最低。問題是,我不知道會輸入多少個等級,所以我需要變量的無限可能性。下面是代碼的相關章節:

while (scores > 0 && in.hasNextInt()) { 
    int grade = in.nextInt(); 

    if (grade >= 90) { 
     A++; 
    } else if (grade >= 80) { 
     B++; 
    } else if (grade >= 70) { 
     C++; 
    } else if (grade >= 60) { 
     D++; 
    } else { 
     F++; 
    } 
    scores--; 
    scoreTotals = (scoreTotals + grade); 
    } 

我想要做這樣的事情:

int variableCount = 1; 
    int grade(variableCount) = grade; 
    variableCount++; 

,然後去比較我的循環,以確定最低和最高的變量。

我查找了定義一個變量通過使用一個變量,但我沒有找到任何東西。我在這裏走正確的道路嗎?

回答

2

我建議你製作兩個存儲最高和最低的變量,並且當你正在經歷這個循環時,如果你找到一個更大或更小的新的變量,就更新它們。

嘗試:

int highest = 0; 
int lowest = 100; 
while (scores > 0 && in.hasNextInt()) { 
int grade = in.nextInt(); 

if (grade >= 90) { 
    A++; 
} else if (grade >= 80) { 
    B++; 
} else if (grade >= 70) { 
    C++; 
} else if (grade >= 60) { 
    D++; 
} else { 
    F++; 
} 

if (grade > highest) { 
    highest = grade; 
} 
if (grade < lowest) { 
    lowest = grade; 
} 
scores--; 
scoreTotals = (scoreTotals + grade); 
} 
+0

這個想法比我的簡單得多....謝謝!儘管如此,我還是很好奇,甚至可能提出我的想法嗎?你可以使用其他變量定義循環內的變量嗎? – coinbird

+0

注意範圍。任何你在一系列大括號內,循環等中定義的東西都會在你離開它們的時候消失。事情必須預先定義以貫穿它。 雖然你可以在循環中定義變量。只要知道他們在每次迭代後都會重新開始。 (有人糾正我,如果我錯了 - 我知道一些語言偏離) – Plasmarob

+0

如果你的想法是在這個循環後再次循環,並找到最小和最大,那麼是的,你可以。然而,這是浪費時間循環一個額外的時間(效率較低)。 – Plasmarob

1

你不需要做這個太複雜了。

int highest = Integer.MIN_VALUE; 
int lowest = Integer.MAX_VALUE; 

while (...) 
{ 
    // your existing stuff... 

    highest = Math.max(highest, grade); 
    lowest = Math.min(lowest, grade); 
} 

最後,highestlowest將是最高和最低等級。

+0

我們還沒有在課堂上了解到數學方法,所以很不幸,我無法使用它。謝謝你! – coinbird