Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试图从用户输入中获取句子长度,但在第一个单词和空格后停止_Java_Delimiter_Next_String Length - Fatal编程技术网

Java 试图从用户输入中获取句子长度,但在第一个单词和空格后停止

Java 试图从用户输入中获取句子长度,但在第一个单词和空格后停止,java,delimiter,next,string-length,Java,Delimiter,Next,String Length,Java任务是让用户键入一个句子/短语,然后打印出该句子包含的字符数。My.length()方法仅将第一个单词和空格作为字符计数。我已经阅读了前面涉及nextLine()的问题和答案,但是如果我使用nextLine()而不是next(),它只允许用户键入问题并等待,不会立即打印任何其他内容。我是Java的新手,我认为可以用分隔符来解决这个问题,但我不确定如何解决,也不知道我遗漏了什么。蒂娅 更新:这是我的代码 import java.util.Scanner; class StringStuf

Java任务是让用户键入一个句子/短语,然后打印出该句子包含的字符数。My.length()方法仅将第一个单词和空格作为字符计数。我已经阅读了前面涉及nextLine()的问题和答案,但是如果我使用nextLine()而不是next(),它只允许用户键入问题并等待,不会立即打印任何其他内容。我是Java的新手,我认为可以用分隔符来解决这个问题,但我不确定如何解决,也不知道我遗漏了什么。蒂娅

更新:这是我的代码

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。

键盘。下一个
呼叫正在等待用户输入。您要调用它两次,因此您的程序希望用户输入两个单词

所以,当你输入“Hello world”时,它分别显示为“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
时,您的代码正在等待用户输入两行

要解决此问题,您需要:

  • nextLine
    阅读整行内容
  • 使用
    语句
    ,而不是第二次请求用户输入
  • 像这样的方法应该会奏效:

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

    您是否在键入问题后立即尝试按Enter键?这将触发下一行。此外,我们还需要查看您的代码以真正了解那里发生了什么。当我在使用nextLine键入问题后立即按Enter键时,它会返回到一个新的状态,就像等待我在不打印系统的情况下键入更多内容一样。