Java计数字母,数字和符号

时间:2013-11-04 09:32:26

标签: java count

我想用JAVA计算字母,数字和符号的数量 但是结果输出并不理想。它应该是5,2,4 但我得到5,2,13

    int charCount = 0;
    int digitCount = 0;
    int symbol = 0;
    char temp;
    String y = "apple66<<<<++++++>>>";
    for (int i = 0; i < y.length(); i++) {
        temp = y.charAt(i);

        if (Character.isLetter(temp)) {
            charCount++;
        } else if (Character.isDigit(temp)) {
            digitCount++;
        } else if (y.contains("<")) {
            symbol++;
        }
    }

          System.out.println(charCount);
          System.out.println( digitCount);
          System.out.println( symbol);

6 个答案:

答案 0 :(得分:2)

应该是

    } else if (temp == '<')) {
        symbol++;
    }

在您的解决方案中,对于每个非字母或数字字符,您检查整个字符串是否包含 <。这总是正确的(至少在你的例子中),所以你得到的结果是字符串中特殊字符的数量。

答案 1 :(得分:1)

你应该使用 y.charAt(i)=='&lt;'而不是y.contains(“&lt;”)

如果你使用y.contains(“&lt;”),它会使用整个字符串来检查它是否包含'&lt;'或不。因为String y包含'&lt;'。当处于for循环时,有4'&lt;',6'+'和3'&gt;'。

为了检查这些字幕,y.contains(“&lt;”)总是如此。这就是为什么你得到13(= 4 + 6 + 3)符号而不是4。

答案 2 :(得分:0)

这一点错了:

y.contains("<")

每次只想检查单个字符(临时)时,您正在检查整个字符串

答案 3 :(得分:0)

int charCount = 0;
int digitCount = 0;
int symbol = 0;
char temp;
String y = "apple66<<<<++++++>>>";
for (int i = 0; i < y.length(); i++) {
    temp = y.charAt(i);

    if (Character.isLetter(temp)) {
        charCount++;
    } else if (Character.isDigit(temp)) {
        digitCount++;
    ****} else if (temp =="<") {
        symbol++;
    }
}****

答案 4 :(得分:0)

else if (y.contains("<")) {

应该是

else if (temp == '<') {

因为否则每次没有字母或数字时都会被提出。

答案 5 :(得分:0)

y.contains("<")

在字符串"<"中搜索子字符串"apple66<<<<++++++>>>"并始终找到它。这发生13次,这是子串<<<<++++++>>>"中的字符数,它既不包含字母也不包含数字。