【问题标题】:count Symbols in java [closed]计算java中的符号[关闭]
【发布时间】:2016-05-23 22:52:35
【问题描述】:

我正在使用一个程序读取文本文件,然后计算(大写,小写,空格)的数量。我的问题是如何计算其余的文本,例如(数字,“。'() / :;) 在一起吗?

这里是一些代码

for (int b = 0; b < crunchifyLine.length(); b++) {
    if (Character.isUpperCase(crunchifyLine.charAt(b))) {
        UppeLetter++;
    }
}

for (int b = 0; b < crunchifyLine.length(); b++) {
    if (Character.isLowerCase(crunchifyLine.charAt(b))) {
        LowerLetter++;
    }
}

for (int c = 0; c < crunchifyLine.length(); c++) {
    if (Character.isWhitespace(crunchifyLine.charAt(c))) {
        spaceNum++;
    }
}       

【问题讨论】:

  • 我相信问题是关于找到类似 nextInt() 的东西可能是 nextSymbol() 来查找字符串中的符号,或者将十进制转换为二进制(代码或方法)的 2 种方法,所以并不完全需要成为一个代码编写请求。我不知道答案,但我不认为这是题外话。

标签: java methods symbols


【解决方案1】:

基于“一些代码”,我会将其更改为更像:

for (int b = 0; b < crunchifyLine.length(); b++) {
    if (Character.isUpperCase(crunchifyLine.charAt(b))) {
        UppeLetter++; // [sic]
    } else if (Character.isLowerCase(crunchifyLine.charAt(b))) {
        LowerLetter++;
    } else if (Character.isWhitespace(crunchifyLine.charAt(c))) {
        spaceNum++;
    } else {
        restOfTheTextTogether++;
    }
}

解决这个问题的另一种方法是简单地采取:

restOfTheTextTogether = crunchifyLine.length() -
    UppeLetter /*[sic]*/ - LowerLetter - spaceNum;

同样对于样式,您正在混合以小写开头的变量和以大写开头的变量,您可以看到 the automatic syntax highlighter 标记通常表示不同的东西(即使这只是惯例)。

【讨论】:

    【解决方案2】:

    不是一个优雅的解决方案,但它仍然适合你:

    final int SPACE_ASCII = ' ';
        final int UPPER_CASE_LOWER_ASCII_LIMIT = 'A';
        final int UPPER_CASE_UPPER_ASCII_LIMIT = 'Z';
        final int LOWER_CASE_LOWER_ASCII_LIMIT = 'a';
        final int LOWER_CASE_UPPER_ASCII_LIMIT = 'z';
        final int DIGIT_LOWER_ASCII_LIMIT = '0';
        final int DIGIT_UPPER_ASCII_LIMIT = '9';
        final String OTHER_CHARS = "\". ' ()/ :;";
    
        int uppercaseCount = 0;
        int lowercaseCount = 0;
        int whitespaceCount = 0;
        int otherSymbolsCount = 0;
        int discardedSymbolsCount = 0;
    
        String text = "$Your String Goes here. 123#";
    
        for (int i = 0; i < text.length(); i++) {
            Character c = text.charAt(i);
            if (c == SPACE_ASCII) {
                whitespaceCount++;
            } else if ((c >= DIGIT_LOWER_ASCII_LIMIT && c <= DIGIT_UPPER_ASCII_LIMIT)
                    || OTHER_CHARS.contains(String.valueOf(c))) {
                otherSymbolsCount++;
            } else if (c >= UPPER_CASE_LOWER_ASCII_LIMIT && c <= UPPER_CASE_UPPER_ASCII_LIMIT) {
                uppercaseCount++;
            } else if (c >= LOWER_CASE_LOWER_ASCII_LIMIT && c <= LOWER_CASE_UPPER_ASCII_LIMIT) {
                lowercaseCount++;
            } else {
                discardedSymbolsCount++;
            }
        }
    
        System.out.println("White Space : " + whitespaceCount);
        System.out.println("Upper Case : " + uppercaseCount);
        System.out.println("Lower Case : " + lowercaseCount);
        System.out.println("Others : " + otherSymbolsCount);
        System.out.println("Discarded : " + discardedSymbolsCount);
    

    【讨论】: