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

在列表中找到最高值和最低值,现在需要找到它们的位置(java),java,if-statement,for-loop,java.util.scanner,Java,If Statement,For Loop,Java.util.scanner,更新:搞定了,下面的代码已经修复。添加了一个while循环,以确认也输入了0或更高的值 所以我在做一个作业,用户输入8分,你必须找到最高分和最低分,以及他们的位置,按照他们给出的顺序。我已经能够找到最高和最低的分数,但我不知道如何找到他们的位置。请帮帮我。这是到目前为止我的代码 import java.util.Scanner; public class HighestLowestPoints { public static void main(String[] args) {

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

    }
  }
}
import java.util.Scanner;
公共类最高最低点{
公共静态void main(字符串[]args){
扫描仪键盘=新扫描仪(System.in);
int最大=-1;
int=0;
int highGame=1;
int lowGame=1;
用于(整数游戏=1;最大游戏){
最大=点数;
highGame=游戏;
}
如果(点<最小值){
最小=点;
lowGame=游戏;
}
如果(游戏==8){
System.out.println(最大值+“游戏中”+高游戏+“\n”
+最小+游戏中+低游戏);
}
}
}
}

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

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

创建两个新变量:

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

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

添加

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


将此
lPos=games
添加到您查找最大数字的if块中,并将
sPos=games
添加到具有最低数字的if块中。

您的几乎就在那里。您需要添加变量来保存HightName和LowerstGame,并在分别设置最高和最低分数时分配它们

例:

if(点<最小值){
最小=点;
最低游戏=游戏;
}

还有,为什么第一场比赛分配的是最低的,而不是最高的

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

仅供参考。如果您想将所有游戏存储在
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());
扫描仪键盘=新扫描仪(System.in);
列表编号=新的ArrayList();

对于(int games=1;games您所说的
位置
到底是什么意思?是在何时输入的(即,
最大的
是输入的第五个数字)?很酷,很高兴你成功了。将来,请包括这样的具体细节,这样就不需要澄清问题。此外,如果你愿意,不要用更正的代码编辑你的原始问题,在下面发布答案。更正原始代码的问题是,现在所有人都写了答案基本上都是无效的。仅供将来参考。哇,回复非常快!谢谢大家,我觉得自己像个白痴。在我发布问题并再次查看代码后,我立即发现了问题。然后我回到这里,有大量回复说只需再生成两个变量。哈哈,无论如何,再次感谢大家。很棒的社区!因为所有游戏都将高于0,这是最高值的原始值。我将最小值指定给第一个游戏,因为其他游戏需要比较,我不想将最低值的原始值设置为100万或其他值。
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());