2016-10-09 2 views
-2

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

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."); 
     } 
    } 
} 
+3

SO не является местом «Моя домашняя работа». Но подумайте о том, действительно ли STORING ввод строк от пользователя (ArrayList?). – MordechayS

+1

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

ответ

0

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

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

использованием Также сделай время, чтобы предотвратить Скопированная оператор печати

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")); 

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

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

удачи

+0

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

+0

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

+0

Ах, сканеры так раздражают. – blipman17

-1

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

0

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

s.nextInt(); 

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

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

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

Для хранения использования:

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

Для добавления номера можно использовать добавить метод List.

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)))); 
    }