Java 如何从用户输入中找到最大数和最小数?(while循环)
老实说,我不知道从哪里开始,我可以通过用户的输入找到平均值,但似乎无法从输入的数字中找出最大或最小的数字。有什么方法可以用吗?任何帮助都会很好。多谢各位 编辑:有点明白了。然而,答案似乎总是最大的数=2.1478。。。或最小值=-2.1478Java 如何从用户输入中找到最大数和最小数?(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()
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);
}