计算句子第一个单词中的字母数

时间:2017-10-10 00:08:08

标签: java string while-loop

我在大学读Java课程。对于我的任务,我必须编写一个程序来显示一个句子中1个字母单词的数量,一个单词中的2个字母单词......等等。该句子是用户输入的。我应该使用循环,我不允许使用数组。

但是现在只是为了开始,我只想找到句子第一个单词中的字母数。我所提供的信函计数错误或错误表示字符串索引超出范围。

  Scanner myScanner = new Scanner(System.in);

  int letters = 1; 

  int wordCount1 = 1; 

  System.out.print("Enter a sentence: ");
  String userInput = myScanner.nextLine();


  int space = userInput.indexOf(" "); // integer for a space character

  while (letters <= userInput.length()) {

    String firstWord = userInput.substring(0, space);
    if (firstWord.length() == 1)
      wordCount1 = 1;
    int nextSpace = space;
    userInput = userInput.substring(space);
  }
  System.out.print(wordCount1);

例如,当我输入“这是一个句子”时,它给了我“字符串索引超出范围:4”对此的任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

尝试:

int len = userInput.split(" ")[0].length();

这将为您提供由空格分割的单词数组,然后只需获取数组中的第一个位置,最后得到长度。

答案 1 :(得分:0)

userInput.indexOf(" ");

这为您提供了不使用数组的第一个单词的长度。

抛出StringIndexOutOfBoundsException是因为,由于永远不会更新space,因此代码最终会尝试从长度为2 的字符串中子索引0到4。

如果在while循环中打印了userInput,则输出为:

This is a sentence
 is a sentence
a sentence
ntence
ce

然后抛出StringIndexOutOfBounds。

我在不使用数组的情况下计算句子中的每个单词的方式是:

Scanner in = new Scanner(System.in);

System.out.print("Enter a sentence: ");
String input = in.nextLine();
in.close();

int wordCount = 0;

while (input.length() > 0) {
    wordCount++;
    int space = input.indexOf(" ");
    if (space == -1) { //Tests if there is no space left
        break;
    }
    input = input.substring(space + 1, input.length());
}

System.out.println("The number of word entered is: " + wordCount);

答案 2 :(得分:0)

您的问题是您没有更新空格和信件。 请参阅下面的代码,我的小改动应该可以正常工作。

Scanner myScanner = new Scanner(System.in);

      int letters = 1; 

      int wordCount1 = 1;
      String firstWord = null;

      System.out.print("Enter a sentence: ");
      String userInput = myScanner.nextLine();


      int space = -2; //= userInput.indexOf(" "); // integer for a space character

      while (letters <= userInput.length() && space != -1) {

        space = userInput.indexOf(" ");
        if (space != -1) 
            firstWord = userInput.substring(0, space);
        if (firstWord.length() == 1)
          wordCount1 = 1;
        userInput = userInput.substring(space + 1);
      }
      System.out.print(wordCount1);
}