更新:想出来,代码已修复如下。添加了一个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);
}
}
}
}
答案 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());