Тест Java-сканера на пустую строку - PullRequest
0 голосов
/ 05 ноября 2019

Я использую сканер для чтения 3 строк ввода, первые две строки, а последняя int. У меня проблема, когда первая строка пуста, и я не знаю, как ее обойти. Я должен сделать это:

String operation = sc.nextLine();
String line = sc.nextLine();
int index = sc.nextInt();
encrypt(operation,line,index);

Но когда первая строка пуста, я получаю сообщение об ошибке. Я попробовал следующее, чтобы вызвать цикл, пока не получу непустую следующую строку, но она тоже не работает:

        while(sc.nextLine().isEmpty){
        operation = sc.nextLine();}

У кого-нибудь есть подсказка, пожалуйста?

Ответы [ 4 ]

2 голосов
/ 05 ноября 2019

Цикл должен работать, хотя на самом деле вы должны вызывать метод isEmpty и сканировать только один раз за итерацию

String operation = "";
do {
    operation = sc.nextLine();
} while(operation.isEmpty());

Вы также можете использовать sc.hasNextLine(), чтобы проверить, есть ли что-нибудь

1 голос
/ 05 ноября 2019

Пожалуйста, попробуйте это.

    Scanner sc = new Scanner(System.in);
    String operation = null;
    String line = null;
    int index = 0;
    while(sc.hasNext()) {
        String nextLine = sc.nextLine().trim();
        if(!nextLine.isEmpty()) {
            operation = nextLine;
            break;
        }
    }
    while(sc.hasNext()) {
        String nextLine = sc.nextLine().trim();
        if(!nextLine.isEmpty()) {
            line = nextLine;
            break;
        }
    }

    while(sc.hasNext()) {
        String nextLine = sc.nextLine().trim();
        if(!nextLine.isEmpty()) {
            index = Integer.parseInt(nextLine);
            break;
        }
    }

    System.out.println(operation + " " + line + " " + index);
1 голос
/ 05 ноября 2019

Попробуйте:

    Scanner scanner = new Scanner(reader);
    String firstNotEmptyLine = "";
    while (scanner.hasNext() && firstNotEmptyLine.equals("")) {
        firstNotEmptyLine = scanner.nextLine();
    }
    if (!scanner.hasNext()) {
        System.err.println("This whole file is filled with empty lines! (or the file is just empty)");
        return;
    }
    System.out.println(firstNotEmptyLine);

Затем вы можете прочитать две другие строки после этого firstNotEmptyLine.

0 голосов
/ 05 ноября 2019
public static void main(String args[]){
    Scanner sc = new Scanner(System.in);        
    String operation = sc.nextLine();
    String line = sc.nextLine();
    int index = sc.nextInt();

    test(operation,line,index);

}

public static void encrypt(String a,String b,int c){

    System.out.println("first :"+a+" Second :"+b+" Third :"+c);

}

Я не вижу здесь никакой ошибки. Хорошо компилируется.

...