2016-11-17 5 views
-4

То, что я понял из моего прошлого опыта, - nextInt() или nextDouble(), будет продолжать поиск до тех пор, пока целое или двойное не будет найдено в той же или следующей строке, что это не имеет значения, тогда как для чтения строки в качестве входного через класс сканера next() рассматривает эти строки перед пробелом и удерживает курсор в той же строке, где nextLine() будет рассматривать остатки на next(), если он используется до кода nextLine(), может кто-то поможет мне разобраться в этом более подробно, особенно около nextLine(), где он начинается и где курсор заканчивается? Кроме того, скажите, пожалуйста, какие ошибки я считаю правильными.Ввод с использованием класса сканера

+0

https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html –

ответ

1

Ваше первое понимание неверно.

, что я понял из моего прошлого опыта является .nextInt() или .nextDouble() будет продолжать поиск не до целого числа или двойной находится в том же или следующая строка не имеет значения

nextInt() и nextDouble() ждет целое и двойное соответственно. Если он получает строку вместо ожидаемого, он выдает InputMismatchException.

Вы можете запустить этот код и сам убедиться.

import java.util.Scanner; 

public class Main 
{ 
    public static void main(String[] args) 
    { 
     Scanner s = new Scanner(System.in); 
     s.nextInt(); 
    } 
} 

По вашей цитате:

.nextInt() или .nextDouble() будет продолжать поиск не до целого числа или двойника находится в том же или следующей строке Безразлично» t matter

Дайте ввод: Abcdf234gd. Вы не получите 234. Вы получаете InputMismatchException.

Для .next() и .nextLine(),

.next(): Только читает и возвращает строку, пока она не встречает пробел или EOF.

.nextLine(): Возвращает строку до встречи \n или \r или EOF. Значит, он возвращает целую строку.


положения курсора

next():

Рассмотрим строку:

ABC DEF GHI JKL MNO PQR STU VWX YZ 

Исходное положение:

->ABC DEF GHI JKL MNO PQR STU VWX YZ 

При вызове next(), курсор перемещается:

ABC ->DEF GHI JKL MNO PQR STU VWX YZ 

и возвращает ABC


nextLine():

Рассмотрим строку:

ABC DEF GHI JKL 
MNO PQR STU VWX 
YZ 

Начальная позиция:

->ABC DEF GHI JKL 
MNO PQR STU VWX 
YZ 

При вызове nextLine(), курсор переместится на следующую строку:

ABC DEF GHI JKL 
->MNO PQR STU VWX 
YZ 

и возвращает ABC DEF GHI JKL.

Надеюсь, это поможет.

+0

Спасибо, я не знаю об исключениях! – Rohitha

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