【问题标题】:What's wrong with my Java code? It should count the spaces, but returns 0我的 Java 代码有什么问题?它应该计算空格,但返回 0
【发布时间】:2011-10-30 23:03:55
【问题描述】:

代码复制如下。如果字符变量 l 等于空格,它应该返回空格的数量,但总是返回 0。

我已经用字母对其进行了测试并且它有效,例如,如果我要求它在变量 l 等于 e 时增加并输入一个带有 e 的句子,它会计算它。但由于某种原因,不是空格。

import java.util.Scanner;

public class countspace {

    public static void main(String[] args) {            
        Scanner input = new Scanner(System.in);         
        System.out.println("Enter a sentence:");            
        String str = input.next();          
        System.out.println(wc(str));

    }

    public static int wc(String sentence) {

        int c = 0;          
        for (int i = 0; i < sentence.length(); i++) {           
            char l = sentence.charAt(i);                
            if (l == ' ') {                 
                c++;                    
            }               
        }           
        return c;           
    }       
}

【问题讨论】:

  • 顺便说一句,您可以使用 sentence.toCharArray() 将字符串转换为 char[] 而不是像您所做的那样获取单个字符。

标签: java methods for-loop


【解决方案1】:

Scanner.next()(默认分隔)只解析到第一个空格 - 所以str 只是句子的第一个单词。

来自Scanner 的文档:

扫描器使用分隔符模式将其输入分解为标记,默认情况下匹配空格。

【讨论】:

    【解决方案2】:

    请改用nextLine。您也可以打印该行进行调试:

    System.out.println(str);
    

    【讨论】:

    • 啊,多亏了这个和 Jon Skeet 的其他评论,我现在明白了,它可以工作了。谢谢。
    【解决方案3】:

    使用字符串str = input.nextLine();而不是字符串str = input.next(); 这是获取下一个字符串的方法。 您可以检查 str 的值是否错误。

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-06
      • 2019-02-23
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      相关资源
      最近更新 更多