我的任务是编写一个程序,以字符串作为输入(仅数字),并对于从 0 到 9 开始的每个数字,打印它们在字符串中出现的次数。 我已经完成了。我已经声明了 10 个带零的整数。每个整数都会统计对应的整数。但最后当我打印结果时,它给出的结果为 48+count 计数表示值出现的次数。 为了得到正确的结果,我需要减去 48。我无法理解为什么我会获得值(value)。
class TestClass {
public static void main(String args[] ) throws Exception {
Scanner sc = new Scanner(System.in);
int a='0',b='0',c='0',d='0',e='0',f='0',g='0',h='0',i='0',j='0';
String s=sc.next();
OUTER:
for (int k = 0; k<s.length(); k++) {
char ch=s.charAt(k);
switch (ch) {
case '0':
a++;
break;
case '1':
b++;
break;
case '2':
c++;
break;
case '3':
d++;
break;
case '4':
e++;
break;
case '5':
f++;
break;
case '6':
g++;
break;
case '7':
h++;
break;
case '8':
i++;
break;
case '9':
j++;
break;
case ' ':
break OUTER;
default:
break;
}
}
System.out.println("0 "+(a-48));
System.out.println("1 "+(b-48));
System.out.println("2 "+(c-48));
System.out.println("3 "+(d-48));
System.out.println("4 "+(e-48));
System.out.println("5 "+(f-48));
System.out.println("6 "+(g-48));
System.out.println("7 "+(h-48));
System.out.println("8 "+(i-48));
System.out.println("9 "+(j-48));
}
}
请任何人解释一下我可以做什么来删除这个程序中的这个额外值。 谢谢
最佳答案
而不是
int a = '0'
使用
int a = 0
'0'
等于 ASCII 中的 48,它是一个字符,而不是数字。因此,通过 int a = '0'
,您实际上将 a
初始化为 48
关于java - 统计字符串中所有数字出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42756762/