Как получить второе слово из ввода Java Scanner?

1

Возможно, это просто требует метода String но мне действительно нужно получить значение второго слова из ввода Scanner полученного следующим образом:

Scanner in = new Scanner(System.in);
String a;
a = in.nextLine();
  • 1
    Используйте a.split("\\s+"); ?
  • 1
    Если вы запускаете свой код из командной строки, вам следует рассмотреть возможность использования переменной args которая передается в main() а не чтение из стандартного ввода.
Теги:
string
java.util.scanner

3 ответа

2
Лучший ответ

Предполагая, что вы определяете слово "слово" как часть, отделяемую пробелом, и вводится ровно два слова:

Scanner in = new Scanner(System.in);
String a;
a = in.nextLine();
String secondWord = a.substring(a.indexOf(" "));

Если их может быть больше, используйте split:

Scanner in = new Scanner(System.in);
String a;
a = in.nextLine();
String secondWord = a.split("\\s+")[1];
2

Используйте http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-

такой как a.split(" ") результатом будет массив размера 2, где вторым элементом будет result.txt

1

Вы можете использовать scanner.next(). Единичный тестовый пример для демонстрации:

@Test
public void testSecondWordSingleLine() {
    Scanner scanner = new Scanner("hello hi there");
    scanner.next();
    assertEquals("hi", scanner.next());
}

Он работает также, если второе слово находится на новой строке, например:

@Test
public void testSecondWordMultiLine() {
    Scanner scanner = new Scanner("hello\nhi there");
    scanner.next();
    assertEquals("hi", scanner.next());
}

@Test
public void testSecondWordMultiLineWithNextLineFirst() {
    Scanner scanner = new Scanner("hello\nhi there");
    scanner.nextLine();
    assertEquals("hi", scanner.next());
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню