0

更新:想通了,代码已在下面修复。添加了一个 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);
        }

    }
  }
}
4

7 回答 7

1

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

于 2013-10-07T20:34:53.390 回答
1

你快到了。您需要添加变量来保存 hightGame 和最低分游戏,并在分别设置最高和最低分时分配它们。

前任:

    if(points < smallest) {
        smallest = points;
        lowestGame = games;
    }
于 2013-10-07T20:38:17.510 回答
0

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

于 2013-10-07T20:36:32.063 回答
0

创建两个新变量:

诠释高位 = -1;诠释低位 = -1;

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

于 2013-10-07T20:36:40.560 回答
0

添加

int lPos = 0, sPos = 0;

在你的for循环之前。

将此添加lPos = games到您找到最大数字sPos = games的 if 块和最低的 if 块中。

于 2013-10-07T20:37:21.453 回答
0

另外,为什么您将最低的分配给第一场比赛,而不是最高的?

if(games == 1) {
    smallest = points;
}
于 2013-10-07T20:42:32.297 回答
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());
于 2013-10-07T21:21:39.480 回答