Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/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 如何从用户输入中找到最大数和最小数?(while循环)_Java_While Loop_Max_Min - Fatal编程技术网

Java 如何从用户输入中找到最大数和最小数?(while循环)

Java 如何从用户输入中找到最大数和最小数?(while循环),java,while-loop,max,min,Java,While Loop,Max,Min,老实说,我不知道从哪里开始,我可以通过用户的输入找到平均值,但似乎无法从输入的数字中找出最大或最小的数字。有什么方法可以用吗?任何帮助都会很好。多谢各位 编辑:有点明白了。然而,答案似乎总是最大的数=2.1478。。。或最小值=-2.1478 Scanner input = new Scanner(System.in); System.out.println("Enter the number of grades: "); double random = input.nextDouble()

老实说,我不知道从哪里开始,我可以通过用户的输入找到平均值,但似乎无法从输入的数字中找出最大或最小的数字。有什么方法可以用吗?任何帮助都会很好。多谢各位

编辑:有点明白了。然而,答案似乎总是最大的数=2.1478。。。或最小值=-2.1478

Scanner input = new Scanner(System.in);


System.out.println("Enter the number of grades: ");
double random = input.nextDouble();
double min = Integer.MIN_VALUE;
double max = Integer.MAX_VALUE;

double total=0;
int count = 1;
while (count < random+1) {




    System.out.println("Enter grade " + count + ":");

    double somenumber = input.nextDouble();
    total+=somenumber;

    count++;

    if (somenumber > max){
        max = somenumber;
    }
if (somenumber < min){
    min = somenumber;
}


}
System.out.println("Total is " + total);
System.out.println("Average is " + (total/random));
System.out.println("Largest number is " + max);
System.out.println("Smallest number is" + min);



        }
扫描仪输入=新扫描仪(System.in);
System.out.println(“输入等级数:”);
double random=input.nextDouble();
双最小值=整数.min\u值;
double max=整数最大值;
双倍合计=0;
整数计数=1;
而(计数<随机+1){
System.out.println(“输入等级”+计数+”:”;
double somenumber=input.nextDouble();
总数+=某个数字;
计数++;
如果(somenumber>max){
max=somenumber;
}
如果(某些数字<分钟){
min=某个数字;
}
}
系统输出打印项次(“总计为”+总计);
System.out.println(“平均值为”+(总/随机));
System.out.println(“最大值为”+max);
System.out.println(“最小值为”+min);
}

}

您需要一些类似

double min = Double.MAX_VALUE;
double max = 0.00;  // assume use positive numbers

while (count < random+1) {

System.out.println("Enter grade " + count + ":");

double somenumber = input.nextDouble();
total+=somenumber;

count++;

max = Math.max (somenumber, max);
min = Math.min (somenumber, min);

}
double min=double.MAX\u值;
双倍最大值=0.00;//假设使用正数
而(计数<随机+1){
System.out.println(“输入等级”+计数+”:”;
double somenumber=input.nextDouble();
总数+=某个数字;
计数++;
max=Math.max(somenumber,max);
min=Math.min(somenumber,min);
}
在循环时执行上述操作

double max = 0;
double min = Double.MIN_VALUE;
在循环中设置一些数字后

if (someNumber > max){
  max = someNumber;
}
if (someNumber < min){
  min = someNumber;
}
if(someNumber>max){
max=someNumber;
}
如果(某些数字<分钟){
min=某个数字;
}

NP很高兴有帮助:)您应该考虑使用for循环而不是while循环,并在循环之外声明SoNoMube,例如:

double someNumber;
for (int i = 1; i <= random; i++){
  //...
}
双倍数;

对于(int i=1;i编辑更新为使用
Double
,现在使用原始循环条件

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        double smallest = Double.POSITIVE_INFINITY; //Initialize to largest int possible
        double largest = Double.NEGATIVE_INFINITY; //Initialize to smallest int possible
        System.out.println("Enter the number of grades: ");
        double random = input.nextDouble();
        int count = 1;

        while (count < random + 1) {
            System.out.print("Input Number: ");
            Double x = input.nextDouble();
            if (x < smallest) {
                smallest = x;
            }
            if (x > largest) {
                largest = x;
            }
            count++;
        }
        System.out.println("Smallest: " + smallest + ", Largest: " + largest);
    }
}
import java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
double minimen=double.POSITIVE_无穷大;//初始化为可能的最大整数
double max=double.NEGATIVE_无穷大;//初始化为尽可能小的整数
System.out.println(“输入等级数:”);
double random=input.nextDouble();
整数计数=1;
而(计数<随机+1){
系统输出打印(“输入编号:”);
Double x=input.nextDouble();
if(x<最小值){
最小=x;
}
如果(x>最大值){
最大=x;
}
计数++;
}
System.out.println(“最小:+最小+”,最大:+最大);
}
}
样本运行:

运行:
输入等级数:
5
输入号码:2.5454
输入号码:3.454
输入编号:-100.54
输入号码:5687
输入号码:579873.5654
最小值:-100.54,最大值:579873.5654
生成成功(总时间:15秒)


谢谢大家给我的提示。但是,当我运行我的程序时,我无法得到最大值和最小值的正确答案

编辑:已解决。感谢所有贡献者。max){ max=somenumber; } 如果(某些数字<分钟){ min=某个数字; } } 系统输出打印项次(“总计为”+总计); System.out.println(“平均值为”+(总/随机)); System.out.println(“最大值为”+max); System.out.println(“最小值为”+min); }
}



最大的数字是2.14748最小的数字是-2.147478…这就是打印出来的…我是不是犯了一个人工错误?

只要有两个最小值和最大值的变量,每次你得到一个输入数字时都要跟踪它们。这些变量可能重复吗?你应该使用
双精度。正无穷
Double.负无穷大
。这将适用于任何输入-如果输入无效,则代码已经失败0@MartinS关于输入是否为零的好观点。我不认为分数应该是负的,所以max=
0.00很好。@MartinS MAX_VALUE=一个常数,它包含类型为double的最大正有限值-应该足够大,可以得到一个等级。是的,但是当我建议使用负无穷大时,当另一个为正无穷大时,它看起来更好^^^^但是是的MAX VALUE是完全好的。你混淆了min和maxI的初始化。很抱歉,我我认为这是正确的。最小值=整数。最小值;和max=Integer.max_值;抱歉,如果我听起来像是对java非常了解,因为我有>\u>不用担心,我也有这种情况^^你试过这个吗<代码>双最小值=双正无穷大
double max=0.0(假设值永远不会小于0)OMG我得到了它OMG OMG OMG OMG OMG OMG OMG OMG感谢您花时间响应。我找到了一条不同的路线,但还是要感谢你让我朝着正确的方向前进。@Coco那是什么路线?从其他答案/评论来看,逻辑完全相同。除了我给了你几乎所有你需要的,哈哈。无论如何,干杯。这真的很有帮助。非常感谢您。您至少应该初始化
min
max
,否则您的代码甚至无法编译…如果每个数字都是正的,我认为会/应该是(他只是没有费心处理这些情况,那就不重要了),这是不正确的-如果每个数字都是正的,然后,在您的解决方案中,
min
将始终为0。
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        double smallest = Double.POSITIVE_INFINITY; //Initialize to largest int possible
        double largest = Double.NEGATIVE_INFINITY; //Initialize to smallest int possible
        System.out.println("Enter the number of grades: ");
        double random = input.nextDouble();
        int count = 1;

        while (count < random + 1) {
            System.out.print("Input Number: ");
            Double x = input.nextDouble();
            if (x < smallest) {
                smallest = x;
            }
            if (x > largest) {
                largest = x;
            }
            count++;
        }
        System.out.println("Smallest: " + smallest + ", Largest: " + largest);
    }
}
Scanner input = new Scanner(System.in);


System.out.println("Enter the number of grades: ");
double random = input.nextDouble();
double min = Integer.MIN_VALUE;
double max = Integer.MAX_VALUE;

double total=0;
int count = 1;
while (count < random+1) {




    System.out.println("Enter grade " + count + ":");

    double somenumber = input.nextDouble();
    total+=somenumber;

    count++;

    if (somenumber > max){
        max = somenumber;
    }
if (somenumber < min){
    min = somenumber;
}


}
System.out.println("Total is " + total);
System.out.println("Average is " + (total/random));
System.out.println("Largest number is " + max);
System.out.println("Smallest number is" + min);



        }