簡體   English   中英

如何從用戶輸入中找到最大的數字和最小的數字? (同時循環)

[英]How do I find the largest number and the smallest number from the user input? (while loop)

老實說,不確定從哪里開始,我能夠使用用戶的輸入找到平均值,但似乎無法從輸入的數字中找出最大的數字或最小的數字。 有我可以使用的方法嗎? 任何幫助都會很棒。 謝謝你。

編輯:有點想通了。 然而,答案似乎總是最大數 = 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);



        }

}

你想要一些看起來像的代碼

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代替,現在使用您的原始循環條件。

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

示例運行:

跑步:
輸入等級數:
5
輸入編號:2.5454
輸入數:3.454
輸入編號:-100.54
輸入編號:5687
輸入號碼:579873.5654
最小:-100.54,最大:579873.5654
構建成功(總時間:15 秒)

謝謝大家的提示。 但是,當我運行我的程序時。 我無法得到最大值和最小值的正確答案。

編輯:解決了。 感謝所有貢獻者。 <33

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



        }

}

最大的數字是 2.14748 最小的數字是 -2.147478...這就是打印出來的...我犯了一個算術錯誤嗎?

以上 while 循環...

double max = 0;
double min = Double.MIN_VALUE;

在設置一些數字后循環......

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

Np 很高興它有幫助:) 你應該考慮使用 for 循環而不是 while 循環並在循環外聲明 someNumber ,如下所示:

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

為了使它更干凈,您可以將 for 循環中的 i <= random 替換為

i <= readNumGrades(input);
private double  readNumGrades(Scanner in){
  System.out.println("Enter the number of grades");
  return in.nextDouble();
}

所以你不再需要變量 count 和 random

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM