Попытка получить длину предложения из пользовательского ввода, но она останавливается после первого слова и пробела - PullRequest
1 голос
/ 07 февраля 2020

Задача Java состоит в том, чтобы пользователь напечатал предложение / фразу, а затем распечатал, сколько символов в предложении. Мой метод .length () считает только первое слово и пробел как символы. Я читал предыдущие вопросы и ответы, включающие nextLine (), но если я использую это вместо next (), он только позволяет пользователю вводить свой вопрос и ждет, больше ничего не печатает немедленно. Я новичок в Java и думаю, что это можно исправить с помощью разделителя, но я не уверен, как или чего мне не хватает. TIA !!

Обновление: Вот мой код.

import java.util.Scanner;

class StringStuff{
   public static void main( String [] args){

      Scanner keyboard = new Scanner(System.in);
      int number;

      System.out.print("Welcome! Please enter a phrase or sentence: ");
      System.out.println();
      String sentence = keyboard.next();
      System.out.println();

      int sentenceLength = keyboard.next().length();


      System.out.println("Your sentence has " + sentenceLength + " characters.");
      System.out.println("The first character of your sentence is " + sentence.substring(0,1) + ".");
      System.out.println("The index of the first space is " + sentence.indexOf(" ") + ".");


   }
}

, когда я набираю «Hello world». в качестве предложения оно печатает:

Ваше предложение содержит 6 символов. Первый символ вашего предложения - H. Индекс первого пробела - -1.

1 Ответ

1 голос
/ 07 февраля 2020

keyboard.next вызов ожидает ввода пользователя. Вы вызываете его дважды, поэтому ваша программа ожидает, что пользователь введет два слова.

Итак, когда вы набираете «Hello world». это читает "Привет" и "мир". отдельно:

//Here, the sentence is "Hello"
String sentence = keyboard.next();
System.out.println();

//Here, keyboard.next() returns "World."
int sentenceLength = keyboard.next().length();

А когда вы используете nextLine, ваш код ожидает ввода пользователем двух строк.

Чтобы это исправить, вам необходимо:

  1. Прочитайте всю строку с помощью nextLine.
  2. Используйте sentence вместо запроса ввода пользователя во второй раз.

Примерно так должно работать:

String sentence = keyboard.nextLine();
System.out.println();

int sentenceLength = sentence.length();
...