Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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中的Length方法,在输入字符串上使用时不会产生预期的结果_Java_String_Java.util.scanner - Fatal编程技术网

java中的Length方法,在输入字符串上使用时不会产生预期的结果

java中的Length方法,在输入字符串上使用时不会产生预期的结果,java,string,java.util.scanner,Java,String,Java.util.scanner,我的初始代码未产生预期结果: import java.util.Scanner; class Strings { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter your word: "); String word1 = sc.next(); System.out.print

我的初始代码未产生预期结果:

import java.util.Scanner;
class Strings {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       System.out.println("Enter your word: ");
       String word1 = sc.next();
       System.out.println(word1.length());
       sc.close();
    }
}
输出:

 tk@localhost:~$ java Strings
                 Enter your word: 
                 avada kedavra
                 5
这不是我绳子的长度。 但当我尝试此操作时(没有用户输入):

输出:

 tk@localhost:~$ java Strings  
                 13
它起作用了! 那么,当我从用户那里获取输入时,为什么它不起作用呢?我缺少什么?

默认情况下,查找并返回下一个完整的令牌。默认情况下,标记是一个单词,用空格或换行符(
\p{javaWhitespace}+
)分隔

因此,在第一个示例中,
word1=“avada”
,长度为5

使用sc.nextLine()获取完整的行。

简而言之:

单击延迟的时间稍微长一点:扫描仪在调用
next
时返回“next token”,代币是通过采用一种模式计算的,默认情况下为“所有空白”。因此,调用next返回下一个单词,而不是预期的完整行


在实例化
扫描仪时设置一个装配模式
或调用
nextLine

下一个单词是avada。使用
sc.nextLine()
谢谢。成功了!java scanner的
next()
方法使用空格作为分隔符。这意味着每当它找到一个,你正在读的字符串就到此结束。按照Eran说的做,如果所有内容都在一行中,则使用
nextLine()
(小心,如果有新行,则必须使用与现有行相同的
nextLine()
,否则会出现同样的问题)记录在案:尽管你的问题以dup结尾,但别忘了在某个时候接受其中一个答案。我发现你的问题写得很好,而且“足够好”可以留下来。我看不出与其他答案有什么区别…@Derlin在时间上有重叠。当我开始写作时,没有答案,我只是需要更长的时间,因为我必须获得指向javadoc的链接。我理解^^^^^要完整,它默认使用,
\p{javaWhitespace}+
。如果我们不想阅读整行,可以将其更改为与另一行匹配。@GhostCat在搜索
java scanner read Through line
:)时,会有很多GhostCat。。。你的票数比我多5000票是有原因的;-)。。。老实说:我下一步搜索
java scanner
,可能使用
token
@GhostCat-Nah,这太具体了,更一般的搜索会产生更好的结果。另外,永远不要使用内部搜索引擎,它很糟糕(:'()。使用谷歌或您最喜欢的外部搜索引擎,如果搜索结果包含太多其他网站,请添加
site:stackoverflow.com
。无论如何,我感谢您搜索了一个副本:)。@Tom I know。我讨厌内部搜索。我“偏爱”我的前三名(NPE、数组越界、字符串越界),这样我可以更快地关闭dup;-)
 tk@localhost:~$ java Strings  
                 13