Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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 数组中的字数_Java - Fatal编程技术网

Java 数组中的字数

Java 数组中的字数,java,Java,我正试着数一数数组中的单词。但它不起作用 我的代码: public static int countWords(String input) { char []a = input.toCharArray(); int spaces = 0; for(int i = 0; i < a.length; i++) if(a[i] == ' ') spaces++; return spaces + 1; } 公共静态int

我正试着数一数数组中的单词。但它不起作用

我的代码:

public static int countWords(String input)
{
    char []a = input.toCharArray();
    int spaces = 0;
    for(int i = 0; i < a.length; i++)
        if(a[i] == ' ')
            spaces++;
    return spaces + 1;  
}
公共静态int countWords(字符串输入)
{
char[]a=input.toCharArray();
int空间=0;
for(int i=0;i
有什么问题


我的输入是
“堆栈溢出”

您的代码有什么问题?这里看起来不错

如果输入字符串包含不安全的空间,则必须通过测试其输入代码(160)来处理此问题:


您的代码计算空格数,并使用空格数推断单词数

不幸的是,这种方法只有在每个单词之间只有一个空格,并且没有前导空格或尾随空格时才有效。它还假设只有一种空格字符,这也不是真的

(旁白:如果您正在阅读用户键入的文本,期望他们总是在每个单词之间留出一个空格而不是其他空格是不现实的。即使规范规定他们会/应该这样做。)

一个简单但更可靠的替代方案是:

  • 修剪字符串以删除前导/尾随空格
  • 使用String.split分割字符串,为“单词之间的填充”提供一个简单的正则表达式;e、 g.
    “\\s+”
    表示“一个或多个空白字符”
  • 返回结果字数组的长度

它如何“不起作用”?是否给出了不正确的字数?我看到的一个直接问题是,如果你有两个连续的空格,它将无法识别。输入字符串是什么,输出是什么,你希望输出是什么?输出总是1。因为空格+1。不,我得到了正确的答案。你测试它用的是什么输入?对我也有用。如果您使用一些动态字符串作为函数参数,可能会在那里查找错误
System.out.println(countWords(“这是一个测试”)正确打印出4。
if(a[i] == 160 || a[i] == ' ')
    spaces++