Java 使用for循环查找最大值和最小值
我试图从用户的输入中提取10个整数,并使用for循环找到最小值和最大值。但我最后的打印语句只是打印输入的数字列表。我迷路了Java 使用for循环查找最大值和最小值,java,loops,Java,Loops,我试图从用户的输入中提取10个整数,并使用for循环找到最小值和最大值。但我最后的打印语句只是打印输入的数字列表。我迷路了 public static void main(String[]args) { Scanner scan=new Scanner(System.in); double a = 0; double max = 0; double min = 0; System.out.print("Enter ten floating points: \n"
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
double a = 0;
double max = 0;
double min = 0;
System.out.print("Enter ten floating points: \n");
for(a=0; a <10; a++) {
a=scan.nextDouble();
if(a == 0) {
min=a;
max=a;
}
else if(a < min) {
min=a;
}
else if (a > max){
max=a;
}
}
System.out.println("Minimum value: " +min);
System.out.println("Maximum value: " +max);
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
双a=0;
双最大值=0;
双最小值=0;
System.out.print(“输入十个浮点:\n”);
对于(a=0;a max){
max=a;
}
}
System.out.println(“最小值:“+min”);
System.out.println(“最大值:“+max”);
}
问题在您的循环中,请将其更改为
for (int x = 0; x < 10; x++) {
到
问题在您的循环中,请将其更改为
for (int x = 0; x < 10; x++) {
到
首先,您的代码不应该正确运行,因为您使用了与计数器和存储用户输入的变量相同的变量
a
。您应该使用两个不同的变量
其次,在循环中声明存储用户输入的变量,否则它可能会保留上一个循环中的值
第三,当用户输入数字0时,if(a==0)
条件将重置min
和max
。这不是你想要的
最后,您不应该像那样初始化max/min。通过将min定义为0,如果用户只输入正数,则min将为0,但用户从未输入0。而是在用户的第一个条目中初始化它们
这应该是这样的:
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("Enter ten floating points: \n");
double tmp = scan.nextDouble(); //read first number from user
double max = tmp; //intialize with the first input
double min = tmp;
for(int i=0; i <9; i++) { //from 0 to 8, 9 numbers since the first has already been read
double a = scan.nextDouble(); //at every loop read a number from the input
if(a < min) {
min=a;
}
//removed else since max and min are independant
if (a > max) {
max=a;
}
}
System.out.println("Minimum value: " +min);
System.out.println("Maximum value: " +max);
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入十个浮点:\n”);
double tmp=scan.nextDouble();//从用户处读取第一个数字
double max=tmp;//使用第一个输入初始化
双最小值=tmp;
对于(int i=0;i max){
max=a;
}
}
System.out.println(“最小值:“+min”);
System.out.println(“最大值:“+max”);
}
首先,您的代码不应该正确运行,因为您使用了与计数器和存储用户输入的变量相同的变量a
。您应该使用两个不同的变量
其次,在循环中声明存储用户输入的变量,否则它可能会保留上一个循环中的值
第三,当用户输入数字0时,if(a==0)
条件将重置min
和max
。这不是你想要的
最后,您不应该像那样初始化max/min。通过将min定义为0,如果用户只输入正数,则min将为0,但用户从未输入0。而是在用户的第一个条目中初始化它们
这应该是这样的:
public static void main(String[]args) {
Scanner scan=new Scanner(System.in);
System.out.print("Enter ten floating points: \n");
double tmp = scan.nextDouble(); //read first number from user
double max = tmp; //intialize with the first input
double min = tmp;
for(int i=0; i <9; i++) { //from 0 to 8, 9 numbers since the first has already been read
double a = scan.nextDouble(); //at every loop read a number from the input
if(a < min) {
min=a;
}
//removed else since max and min are independant
if (a > max) {
max=a;
}
}
System.out.println("Minimum value: " +min);
System.out.println("Maximum value: " +max);
}
publicstaticvoidmain(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入十个浮点:\n”);
double tmp=scan.nextDouble();//从用户处读取第一个数字
double max=tmp;//使用第一个输入初始化
双最小值=tmp;
对于(int i=0;i max){
max=a;
}
}
System.out.println(“最小值:“+min”);
System.out.println(“最大值:“+max”);
}
试试这个
Scanner scan=new Scanner(System.in);
int maximum = Integer.MIN_VALUE;
int minimum = Integer.MAX_VALUE;
for( int i=0; i<10 && scan.hasNextInt(); i++ ) {
int next = scan.nextInt();
maximum = Math.max( next, maximum);
minimum = Math.min( next, minimum);
}
System.out.println("Found maximum :"+maximum+", minimum:"+minimum);
scan.close();
Scanner scan=新的扫描仪(System.in);
int最大值=Integer.MIN_值;
int最小值=整数最大值;
对于(inti=0;i试试这个
Scanner scan=new Scanner(System.in);
int maximum = Integer.MIN_VALUE;
int minimum = Integer.MAX_VALUE;
for( int i=0; i<10 && scan.hasNextInt(); i++ ) {
int next = scan.nextInt();
maximum = Math.max( next, maximum);
minimum = Math.min( next, minimum);
}
System.out.println("Found maximum :"+maximum+", minimum:"+minimum);
scan.close();
Scanner scan=新的扫描仪(System.in);
int最大值=Integer.MIN_值;
int最小值=整数最大值;
for(int i=0;i您只需将每个数字保存到同一个变量,即“a”。使用a
作为变量来保存输入的数字以及控制for循环不是一个很好的主意(或者简单地说:它不会这样工作)。特别是这样,循环将不会运行10次,直到用户输入一个大于等于10的数字。非常感谢!我已经设法解决了它!您只需将每个数字保存到同一个变量,即“a”。使用a
作为变量来保存输入的数字并控制for循环不是一个好主意(或者简单地说:这样不行)。特别是这样,你的循环不会运行10次,直到用户输入一个大于等于10的数字。非常感谢!我已经解决了它!非常感谢!我现在就解决了。谢谢!非常感谢!我现在就解决了。谢谢!我很抱歉问了这个愚蠢的问题,但为什么我们要扫描这些数字wo次?就像我们已经用它来读取第一个数字,那么我们是否再次使用它来存储输入?准确地说,我们扫描了10次数字。在我的示例中,我在循环外执行了一次,以读取第一个数字。因为第一个数字是一种特殊情况,我们使用它来初始化最小值和最大值。然后在每个循环中,我们都需要读取一个新的数字为了将它与最小值和最大值进行比较,我们从用户处读取了10个数字,并获得了这10个数字的最小值和最大值。@NorSaffia这是您在代码中已经做过的事情。因为scan.nextDouble
在for循环中,所以您扫描了10次。为了获得10个数字,您只写了一次,因为您决定了d使用if(if a==0
)管理循环中第一个数字的特定情况。我决定在循环之外处理这个案例。这对结果没有任何改变。这只是一个设计选择。我很抱歉问这个愚蠢的问题,但为什么我们要扫描数字两次?就像我们已经用它读取第一个数字一样,然后我们是否再次使用它来存储输入?确切地说,我们扫描数字10次。在我的示例中,我在循环外执行一次,读取第一个数字。因为第一个数字是一种特殊情况,我们使用它初始化最小值和最大值。然后在每个循环中,我们需要从用户处读取一个新数字,以便将其与最小值和最大值进行9次比较。因此,最后我们读取了10个数字,并获得了这10个数字的最小值和最大值。@NorSaffia This是您已经在代码中执行的操作。因为scan.nextDouble
在for循环中,所以您可以扫描10次