2014-11-03 2 views
-2

Мой метод должен печатать заявление в течение определенного количества раз; однако он будет распечатывать только одно слово введенного оператора, когда мне нужно распечатать все предложение. Пример: Когда я пытаюсь ввести «Это хороший день», он будет выводить только слово «Это» вместо всего предложения.Проблема, выполняющая полное предложение в цикле

public static void repeat(){ 
       System.out.println("Please input a number"); 
       Scanner inputRepeat = new Scanner(System.in); 
       int r = inputRepeat.nextInt(); 
       System.out.println("Enter a sentence to repeat: "); 
       String sentence = inputRepeat.next(); 
       for(int i = 0; i <= r; i++){ 
        System.out.println(sentence); 
       } 
+2

Используйте 'nextLine' вместо' next' – Reimeus

+1

[документация по сканеру] (http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html) - отличный ресурс. –

+0

Возможно, вам понадобится nextLine или аналогичный метод вместо input.next – user1274820

ответ

0

Использование next() будет возвращать только то, что идет перед пробелом. nextLine() автоматически переводит сканер вниз после возврата текущей строки. Поскольку ваша строка состоит из пробелов, вам нужно использовать nextLine(), чтобы прочитать строку. Меняют

String sentence = inputRepeat.next(); 

к

String sentence = inputRepeat.nextLine(); 
1

Причины он печатает только первое слово, потому что Scanner использует пробел в качестве разделителя по умолчанию, поэтому он принимает только первое слово в вашей линии. Для того, чтобы добиться того, чего вы хотите, используйте Scanner.nextLine(), например, так:

public static void repeat(){ 
       System.out.println("Please input a number"); 
       Scanner inputRepeat = new Scanner(System.in); 
       int r = inputRepeat.nextInt(); 
       System.out.println("Enter a sentence to repeat: "); 
       String sentence = inputRepeat.nextLine(); 
       for(int i = 0; i <= r; i++){ 
        System.out.println(sentence); 
       } 
-1

ваша строка предложение = inputRepeat.next(); должен идти в цикле

+1

'inputRepeat.next();' должен находиться вне цикла. Программа должна прочитать предложение и напечатать его 'r' раз. Поэтому, если внутри его будут читаться строки 'r'. – Joe

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