Java На основе этого ввода программа отобразит число целых чисел менее 50 - PullRequest
0 голосов
/ 15 ноября 2018

для задачи мне нужно написать приложение Java, которое принимает от пользователя 30 целых чисел. Ввод должен быть в диапазоне 1-200. Сообщение об ошибке должно отображаться, если пользователь ввел ввод, который не находится в этом диапазоне. На основе этого ввода программа отобразит количество целых чисел, введенных в следующих категориях:  менее 50 Ween от 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 !!");
            }
        }

    }
}

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Вот пример использования 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
0 голосов
/ 15 ноября 2018

Это очень простая проблема здесь @Dilip. Просто введите переменную flag, которая пометит, если ввод неправильный. Если это так, то просто примите значение снова. Остальное продолжай. Ниже приведен фрагмент кода для входной части, также учитывающий неправильные и правильные границы ввода.

        System.out.print("\n\tInput numbers from 1 to 200: \n");
        for(i = 0; i < 5; i++) {
          flag = 0;
          while(flag == 0) {
            list[i] = kbin.nextInt();
            if(!(list[i] < 1 || list[i] > 200)){
              flag = 1;
            }
            else {
              System.out.println("INVALID INPUT!!! Enter a valid number.");
            }
          }
        }

Я ознакомился с формулировкой проблемы, о которой вы говорили в разделе комментариев, и закодировал программу, которая будет служить цели. Я также приложил вывод для подтверждения и ссылки. Надеюсь, это поможет.

КОД:

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 category1[] = new int[5], k1 = 0;
        int category2[] = new int[5], k2 = 0;
        int category3[] = new int[5], k3 = 0;
        int i, flag;

        System.out.print("\n\tInput numbers from 1 to 200: \n");
        for(i = 0; i < 5; i++) {
          flag = 0;
          while(flag == 0) {
            System.out.print("Enter the input number " + (i+1) + ": ");
            list[i] = kbin.nextInt();
            if(!(list[i] < 1 || list[i] > 200)){
              flag = 1;
            }
            else {
              System.out.println("INVALID INPUT!!! Enter a valid number.");
            }
          }
        }

        for(i = 0; i < 5; i++) {
          if(list[i] < 50)
            category1[k1++] = list[i];
          else if(list[i] < 101)
            category2[k2++] = list[i];
          else
            category3[k3++] = list[i];
        }

        System.out.print("Category 1(1 TO 49): ");System.out.println(k1);
    System.out.print("Category 2(50 TO 100): ");
    System.out.println(k2);
    System.out.print("Category 3(greater than 100): ");
    System.out.println(k3);
    System.out.print("Category 4(151 to 200): ");
    System.out.println(k4);
    }
}

ВЫВОД:

  Input numbers from 1 to 200: 
Enter the input number 1:  2
Enter the input number 2:  3
Enter the input number 3:  50
Enter the input number 4:  56
Enter the input number 5:  159
Category 1(1 TO 49): 2
Category 2(50 TO 100): 2
Category 3(101 to 150): 0
Category 4(151 to 200): 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...