使用for循环查找最大值和最小值

时间:2018-04-11 11:44:57

标签: 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");

   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);
}

3 个答案:

答案 0 :(得分:3)

问题在你的for循环中将其改为

for (int x = 0; x < 10; x++) {

还有另一个问题,你需要改变

if(a == 0){

if (x == 0) {

答案 1 :(得分:0)

首先,您的代码不能正确运行,因为您使用相同的变量if(a == 0)作为计数器,并使用变量来存储用户输入。你应该使用两个不同的变量。

第二个声明用于在循环内存储来自用户的输入的变量,否则它可以保留前一循环的值。

当用户输入数字0时,您的min条件将重置maxpublic 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); } 。这不是您想要的。

最后你不应该像那样初始化max / min。通过将min定义为0,如果用户仅输入正数,则min将为0,但用户从未输入0.您可以在用户的​​第一个条目处初始化它们。

这应该是这样的:

db.coins.find({ "serverTime" : { $gt :  "1523441870", $lt : "1523441999"}});

答案 2 :(得分:0)

试试这个

    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();

首先,我们创建扫描仪。 接下来,我们设置一个最大值 - 因为整数可以是负数,我们不能使用0,但必须使用尽可能小的整数。 最低限度相同。

在for循环中,我们必须确保在10次迭代后终止循环,或者输入流没有任何更多的int。

接下来,我们使用数学函数max来找出最大的数字 - 先前找到的最大值,或扫描器中的下一个int。 并且最低限度相同。

最后,请记住关闭扫描仪,以避免资源泄漏。