java.util.Scanner
- лучший выбор для этой задачи.
Из документации:
Например, этот код позволяет пользователю читать число из System.in:
.
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
Две строки - это все, что вам нужно, чтобы прочитать int
. Не стоит недооценивать, насколько мощным является Scanner
. Например, следующий код будет запрашивать число до тех пор, пока оно не будет указано:
Scanner sc = new Scanner(System.in);
System.out.println("Please enter a number: ");
while (!sc.hasNextInt()) {
System.out.println("A number, please?");
sc.next(); // discard next token, which isn't a valid int
}
int num = sc.nextInt();
System.out.println("Thank you! I received " + num);
Это все, что вам нужно написать, и благодаря hasNextInt()
вам вообще не придется беспокоиться о Integer.parseInt
и NumberFormatException
.
Смотри также
Смежные вопросы
Другие примеры
A Scanner
может использовать в качестве источника, среди прочего, java.io.File
или обычный String
.
Вот пример использования Scanner
для токенизации String
и одновременного разбора на числа:
Scanner sc = new Scanner("1,2,3,4").useDelimiter(",");
int sum = 0;
while (sc.hasNextInt()) {
sum += sc.nextInt();
}
System.out.println("Sum is " + sum); // prints "Sum is 10"
Вот несколько более сложное использование регулярных выражений:
Scanner sc = new Scanner("OhMyGoodnessHowAreYou?").useDelimiter("(?=[A-Z])");
while (sc.hasNext()) {
System.out.println(sc.next());
} // prints "Oh", "My", "Goodness", "How", "Are", "You?"
Как видите, Scanner
довольно мощный! Вы должны предпочесть StringTokenizer
, который теперь является классом наследства.
Смотри также
Похожие вопросы