首页 > 解决方案 > Java 根据这个输入,程序会显示小于 50 的整数个数

问题描述

对于这个任务,我需要编写一个接受用户 30 个整数的 Java 应用程序。输入应在 1-200 范围内。如果用户输入的输入不在此范围内,则需要显示错误消息。基于此输入,程序将显示输入以下类别的整数数量:  小于 50  50-100 之间(包括 50 和 100)

样本输出:输入数字 4:211

输入错误..请仅输入 1 到 200 之间的数字

输入数字 4:20

..

..

输入数字 30: 90

少于 50: 12

50-100之间(包括50和100):8

101-150之间(包括101和150):5

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        // Keyboard Initialization
        Scanner kbin = new Scanner(System.in);

        // a.Declare an array to hold 5 Integer values
        int list[] = new int[5];
        int i = 0;

        System.out.print("\n\tInput numbers from 1 to 200: \n");
        while (i < 5) {
            // b.Fill the array with intgers from the keyboard(range: 1 to 200).
            System.out.print("Enter Integer" + (i + 1) + ":");
            int value = kbin.nextInt();

            if (value >= 1 && value <= 200) {
                list[i] = value;
                i++;
            } else {
                System.out.println("!! Error! Please Enter Value between 1 and 200 !!");
            }
        }

    }
}

标签: javaarraysparameters

解决方案


这是一个使用 Java Streams 的示例。这里我们只是先读取所有值,然后过滤掉每个类别。性能方面,如果您不关心被计算的实际数字,最好只为每个类别使用一个计数器。

public class Test {
  public static void main(String[] args) {
    int counter = 0;
    Scanner scanner = new Scanner(System.in);
    List<Integer> values = new ArrayList<>();

    while (counter < 5) {
      System.out.print("Enter integer (" + (counter + 1) + "): ");
      int value = scanner.nextInt();

      if (value >= 1 && value <= 200) {
        counter++;
        values.add(value);
      } else {
        System.out.println("Please enter a value between 1 and 200");
      }
  }
  System.out.println("Between 1-50   : " + values.stream().filter(val -> val < 50).count());
  System.out.println("Between 50-100 : " + values.stream().filter(val -> val >= 50 && val <= 100).count());
  System.out.println("Between 101-150: " + values.stream().filter(val -> val > 100 && val <= 150).count());
  System.out.println("Between 151-200: " + values.stream().filter(val -> val > 150 && val <= 200).count());
}

输出示例:

Enter integer (1): 5
Enter integer (2): 55
Enter integer (3): 125
Enter integer (4): 175
Enter integer (5): -2
Please enter a value between 1 and 200
Enter integer (5): 201
Please enter a value between 1 and 200
Enter integer (5): 199
Between 1-50   : 1
Between 50-100 : 1
Between 101-150: 1
Between 151-200: 2

推荐阅读