2013-10-07 79 views
0

更新:找出它,代碼已在下面修復。增加了一個while循環來確認0或更高的值也被輸入。在列表中找到最高和最低值,現在需要找到它們的位置(java)

因此,我正在做一個分配,用戶輸入8個分數,並且您必須按照給定的順序找到最高分和最低分。我已經能夠找到最高和最低的分數,但我無法弄清楚如何找到自己的位置。請幫幫我。這是我的代碼到目前爲止。

import java.util.Scanner; 
public class HighestLowestPoints { 
    public static void main(String[] args) { 

    Scanner keyboard = new Scanner(System.in); 

    int largest = -1; 
    int smallest = 0; 
    int highGame = 1; 
    int lowGame = 1; 

    for(int games = 1; games <= 8; games++) { 
     System.out.println("Please enter the Texans' score in game " + games); 
     int points = keyboard.nextInt(); 
     while(points < 0) { 
      System.out.println("Please enter a value 0 or above"); 
      points = keyboard.nextInt(); 
     } 
     if(games == 1) { 
      smallest = points; 
     } 
     if(points > largest) { 
      largest = points; 
      highGame = games; 
     } 
     if(points < smallest) { 
      smallest = points; 
      lowGame = games; 
     } 
     if(games == 8){ 
      System.out.println(largest + " in game " + highGame + "\n" 
           + smallest + " in game " + lowGame); 
     } 

    } 
    } 
} 
+0

你是什麼意思'位置'?他們進入的時候(即「最大」是輸入的第5個數字)? –

+0

/***完全***/ –

+0

很酷,很高興你有它的工作。今後,請包括這樣的具體細節,以便澄清問題是不必要的。另外,如果您覺得如此傾向,則不要使用更正後的代碼編輯您的原始問題,而應發佈以下答案。糾正你原來的代碼的問題是,現在所有人寫的答案基本上已經失效。只爲未來的FYI。 –

回答

1

你幾乎在那裏。您需要添加變量以保存hightGame和lowestGame,並分別在分別設置最高分和最低分時分配它們。

例:

if(points < smallest) { 
     smallest = points; 
     lowestGame = games; 
    } 
+0

哇!非常快的反應!謝謝你們,我覺得自己像個白癡。在我發佈問題並再次查看代碼後,我立即發現了它。然後我回到了這裏,並且有大量的答覆說只是增加兩個變量。無論如何,再次感謝你們。偉大的社區! –

1

你可以使用遊戲計數器變量在for循環它包含您的位置:-)

0

添加其他2個變量,maxIndex和minindex與設置最小或最大時,設置相應的變量,以及與「遊戲」變量(包含位置)。

0

創建兩個新變量:

int highPos = -1; int lowPos = -1;

每次指定最小值時,將遊戲分配給lowPos 每次指定最高值時,將遊戲分配給highPos。

0

for循環之前添加

int lPos = 0, sPos = 0; 

將此lPos = games添加到您的if-block中,找到最大的數字並將sPos = games添加到if-block中的最低。

0

而且你爲什麼把最低的第一場比賽,但不是最高的?

if(games == 1) { 
    smallest = points; 
} 
+0

因爲所有的遊戲都會高於0,這是最高的原始值​​。我把最小的一個分配給第一個遊戲,因爲剩下的遊戲需要比較的東西,我不想把最低的原始值設置爲一百萬或某些東西。 –

0

僅供參考。如果你想將所有的遊戲存儲在ArrayList中,你也可以避免所有這些不同的情況,並使代碼更具可讀性。然後使用方法Collections.max來獲得最大遊戲,並使用Collections.min來獲得最小遊戲。然後用方法list.indexOf您可以找到值被添加到列表中的位置。

Scanner keyboard = new Scanner(System.in); 
List<Integer> numbers = new ArrayList<Integer>(); 
for(int games = 1; games <= 8; games++) { 
    System.out.println("Please enter the Texans' score in game " + games); 
    int points = keyboard.nextInt(); 
    while(points < 0) { 
     System.out.println("Please enter a value 0 or above"); 
    points = keyboard.nextInt(); 
    } 
    numbers.add(points); 
} 
StringBuilder output = new StringBuilder(); 
output.append("Maximum points: " + Collections.max(numbers)); 
output.append(" in game: " + (numbers.indexOf(Collections.max(numbers)) + 1)); 
output.append(" minimum points: " + Collections.min(numbers)); 
output.append(" in game: " + (numbers.indexOf(Collections.min(numbers)) + 1)); 
System.out.println(output.toString()); 
相關問題