当前位置: 首页 > 知识库问答 >
问题:

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

黄伟
2023-03-14

我在大学上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个答案

松越
2023-03-14

你的问题是你没有更新空间和字母。请参阅下面的代码和我的小改动,应该可以正常工作。

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);
}
锺离明煦
2023-03-14
userInput.indexOf(" ");

这为您提供了第一个单词的长度,而无需使用数组。

将引发字符串索引 OutOfBounds异常,因为由于空间从不更新,代码最终会尝试从长度为 2 的字符串中将索引 0 到 4 进行子字符串处理。

如果在while循环中打印<code>用户输入

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);
胡俊贤
2023-03-14

尝试使用:

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

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

 类似资料:
  • 问题内容: 我正在尝试编写一个函数来清理用户输入。 我不是要使其完美。我宁愿用小写字母表示一些名称和缩写,也不愿用大写字母表示完整的段落。 我认为该函数应使用正则表达式,但是我对这些表达式很不好,需要一些帮助。 如果以下表达式后跟一个字母,我想将该字母大写。 更好的是,该函数可以在“。”,“!”之后添加一个空格。和“?” 如果这些后面跟有一封信。 如何做到这一点? 问题答案: 由于PHP 5.5.

  • 我一直在试图弄清楚如何计算句子每个单词中的元音和字符。例如 在句子 < code>hello : 5个字符,2个元音 <代码>有:5个字符,2个元音 。我见过完整句子做同样事情的代码。但不是一个字一个字地。 下面是我一直在做的编码 输入将全部。我很难弄清楚这一点。 在运行代码时,我没有得到元音计数。我能把句子分开。但元音计数没有发生。

  • 问题内容: 如何获得给定字符串的每个单词的首字母? 我找到了javascript方法,但不确定如何将其转换为php。 问题答案: 在空格上,然后使用表示法以数组形式访问结果字符串: 如果您期望多个空格可以分隔单词,请改用 或者,例如,如果非空格字符分隔单词(),请同时使用:

  • 问题内容: 我正在编写一个非常基本的Java程序,该程序可以计算句子中每个单词的频率,到目前为止,我设法做到了这一点 我已经提取了每个字符串并将其存储在数组中,现在的问题实际上是如何计算每个“单词”重复出现的次数以及如何显示以使重复的单词不会多次显示,您能帮我这个忙吗?一个? 问题答案: 使用以单词为键的地图并将其计为值,像这样 如果不允许使用java.util,则可以使用一些排序算法对arr进行

  • 给定一个句子,我希望能够数出每个单词中有多少个元音。 示例输入: 示例输出: 我最初的想法是有2个同时循环。第一个循环直到满足EOF以结束程序,第二个(嵌套的)同时循环将运行直到满足空格 (" ") ,同时还对当前单词中的元音求和。一旦遇到空格,它将打印出元音的当前值,第二个同时循环将结束并重新开始(元音计数器重置回0)。 这是我为此编写的代码: 然而,这导致语法错误,我不能找出我的错误。 第6行

  • 对于我的程序,我想颠倒一行文本中的字母。但是我不想颠倒句子中单词的顺序。例如,当我输入:“这是一个字符串” 我得到了一个siht 但我想要的是