【问题标题】:Count char in Java excluding ascii 32计算 Java 中的字符,不包括 ascii 32
【发布时间】:2015-02-26 01:48:08
【问题描述】:

我的问题是前面的代码 words.lenght() 正在计算包​​括空格在内的所有字符。我想要做的是计算所有字符,不包括 ascii 32 的空格。

public static void main (String args[]){


        String words = "kickflip in the face yo!";
        int ff = 0;

        for(int i = 0; i<=words.length(); i++){

            if(words.charAt(i) == (char) 32)
                continue;


            ff++;

        }

        System.out.print(ff);

【问题讨论】:

  • Character.isSpace? words.replace(" ", "").length() 怎么样?
  • 看起来不错。你有什么问题?
  • 它说线程“main”中的异常 java.lang.StringIndexOutOfBoundsException: String index out of range: 17 at java.lang.String.charAt(Unknown Source) at TestKlass.main(TestKlass.java: 15)
  • @tinker101,用那个字符串不会是 17,而是 24。无论如何,包括我在内的两个答案(迄今为止)都指出了问题所在。

标签: java count char


【解决方案1】:

除了在for 行中使用&lt;= 之外,您应该使用&lt;(当您尝试抓取索引24 处的字符时会导致异常),以及缺少的右括号(我假设这只是一个错字),该代码应该可以正常工作。

解决了这些问题后,它会为您提供正确的 20 值:

public class Test {
    public static void main (String args[]){
        String words = "kickflip in the face yo!";
        int ff = 0;
        for (int i = 0; i < words.length(); i++)
            if (words.charAt(i) != ' ')
                ff++;
        System.out.print(ff);
    }
}

您会注意到我制作了另外两个使代码更好的小模组(在我看来)。

第一个是使用' '而不是(char)32,第二个是稍微重组计数位,这样就不需要continue

毫无疑问,可以进行其他改进,但它们往往会脱离初级水平。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多