简体   繁体   English

如何显示用户输入的最高和最低数字?

[英]How to display the highest and lowest numbers input by the user?

The program asks the user to input any amount of people they want.该程序要求用户输入他们想要的任意数量的人。 The program will then ask for the height of each person (not in feet, just in whole numbers like 5, 7, 10, etc.).然后程序会询问每个人的身高(不是以英尺为单位,而是以整数为单位,例如 5、7、10 等)。 The program then displays the average height of all those people as well as the tallest and shortest height out of those people.然后程序会显示所有这些人的平均身高以及这些人中最高和最短的身高。

The average height part works but my problem is trying to display the tallest height entered and shortest height entered.平均高度部分有效,但我的问题是尝试显示输入的最高高度和输入的最短高度。

package loop2;

import java.io.Reader;
import java.text.DecimalFormat;
import java.util.Random;
import java.util.Scanner;

public class PgmTemplate {

   public static void main(String[] args) {
       Scanner input =new Scanner(System.in);
        int sum =0;
        int number=0, n;
        int average = 0;
        int highest= 0;
        int lowest= 0;
        lowest = number;
        System.out.println("enter the number of people");
        n = input.nextInt();
        for(int i = 0; i < n; i++) {
            System.out.println("enter the height of each person");
            number = input.nextInt();
            sum += number;
            average = sum / n;
        }
        if(number > highest) {
            highest = number;
        }else if(number < lowest) {
            lowest = number;
        }
        System.out.println("the average height is "+ average);
        System.out.println("the tallest person is " + highest);
        System.out.println("the shortest person is " + lowest);
    }
}

No need to calculate the average after every input.无需在每次输入后计算平均值。

I would do it like this:我会这样做:

lowest = Integer.MAX_VALUE
...
for (int i = 0; i < n; i++) {
  int number = scanner.nextInt();
  sum += number;
  if (number > highest)
    highest = number;
  if (number < lowest)
    lowest = number;
}

Then after getting all the input, you have what you need:然后在获得所有输入后,您就拥有了所需的东西:

System.out.println("the average height is " + (sum / n));
System.out.println("the tallest person is " + highest);
System.out.println("the shortest person is " + lowest);

You need to put those checks between number , highest and lowest inside the loop.您需要将这些检查放在循环numberhighestlowest之间。

As it stands you're only checking for the latest number that has been input.就目前而言,您只检查已输入的最新number

Also you don't need to calculate a running average.此外,您不需要计算运行平均值。 So, move that outside the loop.所以,把移到循环之外。

for (int i = 0; i < n; i++) {
    System.out.println("enter the height of each person");
    number = input.nextInt();
    sum += number;
    if (number > highest) {
        highest = number;
    } else if (number < lowest) {
        lowest = number;
    }
}
average = sum / n;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM