2014-12-12 4 views
0

Вход:Давать вход, разделенных пробелами

1 10 

Как я могу обеспечить пространство между двумя входами, так что компилятор может принимать как входы по-разному.

Я пытался использовать

st1=in.nextInt(); 
in.next(); 
st2=in.nextInt(); 
+0

возьмите целую строку как одну. разделите строку пробелом. преобразовать результаты строки в integer. –

+0

thnaks for ur help –

ответ

1

Следующая строка даст вам String массив, содержащий два числа как строки:

String[] numbersFromUser = in.nextLine().split(" "); 

Если предположить, что пользователь правильно форматирует вход.

Это, конечно, работать в течение нескольких аргументов больше, чем 2.

Вы можете затем перейти конвертировать numbersFromUser[0] и numbersFromUser[1] в int значений вам нужно:

int st1 = Integer.valueOf(numbersFromUser[0]).intValue(); 
int st2 = Integer.valueOf(numbersFromUser[1]).intValue(); 
+0

спасибо за ваш ответ, но когда я использую предоставленный фрагмент, я получаю NumberFormateException –

+0

Каковы точные значения 'numbersFromUser [0]' и 'numbersFromUser [1]' в этом конкретном случае? Вы уже работали с отладчиком? – reto

+0

Значения 1 и 10. И я не familier с отладчиком. –

0

Использование:

data = line.split("\s"); 
first = data[0]; 
second = data[1]; 
third = data[2]; 
System.out.println(first) 
System.out.println(second); 
System.out.println(third); 

Вход:

1 5 6 

Выход:

1 
5 
6 
2

Просто удалите in.next(); вызов. nextInt() уже «игнорирует» пробелы. И нет необходимости создавать массив с помощью split() и конвертировать число «вручную». Просто пусть сканер справиться с этим с помощью nextInt() как вы уже:

Scanner s = new Scanner("1 10 9 5"); 
while(s.hasNextInt()) { 
    int number = s.nextInt(); 
    System.out.println(number); 
} 

Хорошая вещь о том, что есть, что вы не получите NumberFormatException, как и в других ответах, если пользователь не предоставляет номера (например, a b c).

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