Array list возвращает пустой список после того, как я попытался добавить строки с клавиатуры - PullRequest
1 голос
/ 16 октября 2019

Здесь, в этой программе, я хочу бесконечно вводить строки с клавиатуры, пока пользователь не введет «0». Я перепробовал много разных комбинаций next () и nextLine (), но программа либо вывела пустой список, либо не получила строку.

Я изменил позицию «if condition» снизу вверх в пределахвечная петля. Сначала он даже не вышел из цикла.

Ниже приведен мой код:

    List<String> keyWords = new ArrayList<String>();
    System.out.println("Input the keywords: (type 0 if you want to stop)\n");
    Scanner scanKeyWords = new Scanner(System.in);
    for(;;) {
        if(scanKeyWords.next().equals("0")) break;
        else
        keyWords.add(scanKeyWords.nextLine());
        System.out.println("done");
    }
    System.out.println(keyWords.toString());
    System.out.println(keyWords.isEmpty());

Например, когда я ввожу "Love", "hate" "0", код возвращается[,,] ???

Я проверил, что он совсем не пустой с isEmpty?

Я просто новичок в Java. В настоящее время я пытаюсь улучшить свои навыки, работая над этим проектом, связанным с ключевыми словами.

Не могли бы вы помочь мне в этом? Большое спасибо!

1 Ответ

2 голосов
/ 16 октября 2019

Я думаю, это потому, что вы использовали вход в условии if, поэтому внутри блока else ничего не вернется из nextLine().

Это рабочая версия:

import java.util.*;

class Test {
    public static void main(String[] args) {
        List<String> keyWords = new ArrayList<>();
        Scanner scanKeyWords = new Scanner(System.in);
        for(;;) {
            String next = scanKeyWords.next();
            if("0".equals(next)) {
                break;
            }
            // if you put keyWords.add(scankeyWords.nextLine()) here, it will not work.
            keyWords.add(next);
        }
        System.out.println(keyWords.toString());
    }
}
...