在列表中找到最高值和最低值,现在需要找到它们的位置(java)
更新:搞定了,下面的代码已经修复。添加了一个while循环,以确认也输入了0或更高的值 所以我在做一个作业,用户输入8分,你必须找到最高分和最低分,以及他们的位置,按照他们给出的顺序。我已经能够找到最高和最低的分数,但我不知道如何找到他们的位置。请帮帮我。这是到目前为止我的代码在列表中找到最高值和最低值,现在需要找到它们的位置(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) {
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());