Как мне считывать разные входные данные со сканера в Java?

#java #loops #java.util.scanner

#java #циклы #java.util.scanner

Вопрос:

Мне нужно получить различные интегральные входные данные, а затем при -1 вводе программа должна показывать наибольшую, наименьшую сумму всех введенных, количество всех введенных значений и среднее значение всех введенных значений. Я запустил цикл для приема различных входных данных, но не могу найти подходящий способ их считывания, а затем играть с ними. Я искал везде в Интернете.

 import java.util.Scanner;

public class Exercise16 {
    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        System.out.println("Please enter a Positive integer or -1 to quit.");

        while (!s.nextLine().equals("-1")) {
            System.out.println("Please enter a Positive integer or -1 to quit.");
        }
    }
}
  

Комментарии:

1. SO — это не то место, где я делаю домашнее задание. Но подумайте о том, чтобы на самом деле СОХРАНИТЬ строки, введенные пользователем (ArrayList?).

2. используйте s.nextInt() и отслеживайте каждое введенное число [наибольшее, наименьшее и среднее].

Ответ №1:

s.nextLine() считывает ваши входные данные

Вы должны сохранить его в переменной.

Также используется do-while для предотвращения скопированного оператора печати

 Scanner s = new Scanner(System.in);
String in;  // where to save next input value 

do {
    System.out.println("Please enter a Positive integer or -1 to quit.");
    in = s.nextLine();
    // TODO: parseInt, check for positive number 
}  while (!in.equals("-1"));
  

Если вы хотите отслеживать минимальные и максимальные значения, вам понадобятся два дополнительных целочисленных значения.

Если вы хотите отслеживать средние значения, вам нужен список.

Удачи

Комментарии:

1. если я правильно помню, есть al.so a .nextInt() и .nextDouble() и так далее для всех примитивных типов данных, которые аккуратно анализируют ваши данные в такие форматы или просто ждут, пока вы не используете правильный формат для этого типа данных.

2. Существует, но для начинающих они не понимают, что символ новой строки не используется при использовании указанных методов

Ответ №2:

Сначала вам нужно прочитать целое число из командной строки. Для этого вы должны использовать

 s.nextInt();
  

Как только вы получите это, вам нужно получить наибольшее и наименьшее число, вы можете получить их, используя 2 переменные.

Для среднего значения вы можете сохранить сумму и количество раз, когда пользователь запрашивал ввод, еще 2 переменные. Нет необходимости хранить элементы в списке или каком-либо другом хранилище.

Если вы хотите видеть введенные числа, чем вам нужно хранить, вам не нужно.

Для хранения используйте :

 List<Integer> numbers = new ArrayList<Integer>();
  

Для добавления числа вы можете использовать метод добавления списка.

 public static void main2() {
        Integer laregst = Integer.MIN_VALUE;
        Integer smallest = Integer.MAX_VALUE;
        Integer sum = 0;
        Integer count =0 ;
        Scanner s = new Scanner(System.in);
        int temp = s.nextInt();
        while (temp != -1) {
            if(temp > laregst){
                laregst = temp;
            }

            if(temp < smallest){
                smallest = temp;
            }

            sum  = temp;
            count  = 1;

            System.out.println("Please enter a Positive integer or -1 to quit.");
            temp = s.nextInt();
        }
        System.out.println("Largest : " (count == 0?"NA":laregst) " Smallest : " (count == 0?"NA":smallest) " Mean : " (count == 0 ? "NA" : ((sum *1.0/count))));
    }
  

Ответ №3:

если вы не хотите читать значение нескольких целых чисел в одной строке, вы можете использовать s.nextInt() для чтения одного целого значения за каждый раз