我想用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);
答案 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
次,这是子串<<<<++++++>>>"
中的字符数,它既不包含字母也不包含数字。