Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用for循环查找最大值和最小值_Java_Loops - Fatal编程技术网

Java 使用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"

我试图从用户的输入中提取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");

   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次