读取用户输入直到输入 0 的 Java 程序,还会进行一些计算(偶数/奇数、平均值等)

新手上路,请多包涵

该程序旨在接受用户输入,直到输入零,然后打印出有关整数的信息。它还意味着读取输入是否为偶数/奇数,计算总和,找到输入的最大和最小整数,计算输入的总整数,并求出平均值。当用户输入 0 时它不会停止,如果没有输入也不会打印“No data entered”行。它也没有正确计算偶数。

 import java.util.Scanner;

public class Lab4 {

 public static void main(String[] args) {

    int counter = 0;
    double even = 0;
    double odd = 0;
    double sum = 0;
    int input = 0;
    int large = 0;
    int small = 0;
    double average;

    System.out.print("Enter a series of values (0 to quit): ");
    Scanner in = new Scanner(System.in);

    while ((input = in.nextInt()) != 0) {

        small = in.nextInt();
        large = in.nextInt();

        if (input != 0)
            sum = input + sum;
            counter++;

        if (input > large)
            large = input;

        if (input < small)
            small = input;

        if (input % 2 == 0)
            even = even + 1;
        else
            odd = odd + 1;

        }

    if (counter > 0) {

        average = sum / counter;

        System.out.println("The smallest integer is: " + small);
        System.out.println("The largest integer is: " + large);
        System.out.println("Total number of integers entered is " + counter);
        System.out.println("Total even numbers entered is " + even);
        System.out.println("Total odd numbers entered is " + odd);
        System.out.println("The average value is: " + average);
    } else {

            System.out.println("No data was entered.");
        }

    }
}

原文由 Sharon Nystrom 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 611
2 个回答

当读取第一个数字来填充大小时,我们只需要这样做一次。并且无需使用 in.nextInt() 重新读取数字,因为这将耗尽输入的下一个输入,这可能导致未在零处终止错误。

 while ((input = in.nextInt()) != 0) {

        if (counter == 0)
          small = large = input;

        if (input != 0)
            sum = input + sum;
            counter++;

        if (input > large)
            large = input;

        if (input < small)
            small = input;

        if (input % 2 == 0)
            even = even + 1;
        else
            odd = odd + 1;

        }

原文由 devilfart 发布,翻译遵循 CC BY-SA 3.0 许可协议

您在 largesmall 的循环体中输入了额外的数字。使用 ++ 而不是 += 1 ,我更喜欢 Integer.minInteger.max ;将 smalllarge 分别初始化为非常大和非常小的东西。就像是,

 double even = 0, odd = 0, sum = 0;
int counter = 0, input = 0, large = Integer.MIN_VALUE, small = Integer.MAX_VALUE;
System.out.print("Enter a series of values (0 to quit): ");
Scanner in = new Scanner(System.in);
while ((input = in.nextInt()) != 0) {
    small = Integer.min(small, input);
    large = Integer.max(large, input);
    sum += input;
    counter++;
    if (input % 2 == 0) {
        even++;
    } else {
        odd++;
    }
}

if (counter > 0) {
    double average = sum / counter;
    System.out.println("The smallest integer is: " + small);
    System.out.println("The largest integer is: " + large);
    System.out.println("Total number of integers entered is " + counter);
    System.out.println("Total even numbers entered is " + even);
    System.out.println("Total odd numbers entered is " + odd);
    System.out.println("The average value is: " + average);
} else {
    System.out.println("No data was entered.");
}

原文由 Elliott Frisch 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题