在列表中找到最高和最低值,现在需要找到自己的位置(java)

时间:2013-10-07 20:30:41

标签: java if-statement for-loop java.util.scanner

更新:想出来,代码已修复如下。添加了一个while循环以确认输入0或更高的值。

所以我做了一项任务,用户输入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);
        }

    }
  }
}

7 个答案:

答案 0 :(得分:1)

您可以在for循环中使用游戏计数器变量,它包含您的位置:-)

答案 1 :(得分:1)

你几乎就在那里。您需要添加变量以保存hightGame和lowestGame,并在分别设置最高和最低分数时分配它们。

例如:

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

答案 2 :(得分:0)

添加另外两个变量,maxIndex和minIndex,当设置最小或最大时,设置适当的变量以及“games”变量(包含位置)。

答案 3 :(得分:0)

创建两个新变量:

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

每次分配最小值时,都会将游戏分配给lowPos 每次分配最高分配时,都要将游戏分配给highPos。

答案 4 :(得分:0)

添加

int lPos = 0, sPos = 0;
for循环之前

将此lPos = games添加到您的if-block中,其中您找到最大的数字,sPos = games添加到最低的if-block。

答案 5 :(得分:0)

另外,为什么你要为第一场比赛分配最低分,但不是最高分?

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

答案 6 :(得分:0)

仅供参考。如果您将所有游戏存储在ArrayList中,您也可以避免所有这些不同的if并使代码更具可读性。然后使用方法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());