2016-01-31 3 views
-1

Можете ли вы сказать мне, что случилось со следующим кодом:Java, сканер, nextLine() ошибки метода

Scanner input = new Scanner(System.in); 
    Vector <Vector <String>> allValues = new Vector <Vector <String>>(); 
    Vector <String> currentTestValues = new Vector <String>(); 
    int tests = input.nextInt(); 
    for (int i = 0; i < tests; i++){ 
     int deposits = input.nextInt(); 
     for (int j = 0; j < deposits; j++){ 
      String s = input.nextLine(); 
      currentTestValues.add(s); 
     } 
     allValues.add(currentTestValues); 
     currentTestValues.clear(); 
    } 
    for (Vector <String> v : allValues){ 
     for (String s : v){ 
      System.out.println(s); 
     } 
    } 

кажется прекратить после input.nextLine();

Как это исправить?

+1

Terminate ... * how *? – kolossus

+0

Может быть, это означает пропустить. – Satya

+0

Нет, я имею в виду программу останавливает. Например, если я ввожу: 1 asd программа останавливается. – Poyr23

ответ

0

input.nextLine() и currentTestValues.clear();. Это позволит удалить ваши значения из списка и т. Д. Из vector.So удалить его.

Scanner input = new Scanner(System.in); 
Vector <Vector <String>> allValues = new Vector <Vector <String>>(); 
Vector <String> currentTestValues = new Vector <String>(); 
int tests = Integer.parseInt(input.nextLine()); 
for (int i = 0; i < tests; i++){ 
    int deposits = Integer.parseInt(input.nextLine()); 
    for (int j = 0; j < deposits; j++){ 
     String s = input.nextLine(); 
     currentTestValues.add(s); 
    } 
    allValues.add(currentTestValues); 

} 
for (Vector <String> v : allValues){ 
    for (String s : v){ 
     System.out.println(s); 
    } 
} 
} 
+0

Ввод будет содержать пробелы, например: «что-то ввести», поэтому я не могу использовать .next(); – Poyr23

+0

@ Poyr23 отредактировал ответ –

+0

спасибо, я не знаю, что .clear() вел себя так. Я изменил его на currentTestValues ​​= new Vector(); и теперь он работает. – Poyr23

Смежные вопросы