如何从用户输入中找到最大和最小的数字? (同时循环)
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);
}
上面的 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
编辑 已更新为使用 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);
}
}
样本运行:
run:
Enter the number of grades:
5
Input Number: 2.5454
Input Number: 3.454
Input Number: -100.54
Input Number: 5687
Input Number: 579873.5654
Smallest: -100.54, Largest: 579873.5654
BUILD SUCCESSFUL (total time: 15 seconds)
谢谢大家的指教。但是,当我运行我的程序。我无法获得最大值和最小值的正确答案。
编辑:已解决。感谢所有贡献者。 <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...这就是打印出来的...我是不是算术错误了?
老实说,我不确定从哪里开始,我能够使用用户的输入找到平均值,但似乎无法从输入的数字中找出最大或最小的数字。有什么方法可以使用吗?任何帮助都会很棒。谢谢。
编辑:有点明白了。然而,答案似乎总是最大数 = 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);
}
上面的 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
编辑 已更新为使用 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);
}
}
样本运行:
run:
Enter the number of grades:
5
Input Number: 2.5454
Input Number: 3.454
Input Number: -100.54
Input Number: 5687
Input Number: 579873.5654
Smallest: -100.54, Largest: 579873.5654
BUILD SUCCESSFUL (total time: 15 seconds)
谢谢大家的指教。但是,当我运行我的程序。我无法获得最大值和最小值的正确答案。
编辑:已解决。感谢所有贡献者。 <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...这就是打印出来的...我是不是算术错误了?