我有一个实验室,涉及计算字符串中的数字数量和数字字母。实际上,我从我的java书中得到了计算字母的方法,所以我仍然不太确定它到底是如何工作的,但是当我尝试重新创建该方法但对于实验室的数字部分时,输出是错误的。如果有人能指出我正确的方向,我将不胜感激。
正确的输出应该是:
1800朵花
e出现1次
f出现1次
l出现1次
o出现1次
r出现1次
s出现1次
w出现1次
0 出现 2 次
1 出现 1 次
8出现1次
构建成功(总时间:6秒)
我得到的输出是: 输入字符串:
1800朵花
e出现1次
f出现1次
l出现1次
o出现1次
r出现1次
s出现1次
w出现1次
0 出现 1 次
1 出现 1 次
2 出现 1 次
3 出现 1 次
4 出现 0 次
5出现0次
6出现0次
7 出现 0 次
8出现0次
9 出现 0 次
构建成功(总时间:6秒) 公开课 Lab12 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String s = new String("");
System.out.println("Enter a string: ");
s = input.nextLine();
int[] counts = countletters(s.toLowerCase());
for (int i =0; i < counts.length; i++){
if (counts[i] != 0){
System.out.println((char)('a' + i) + " appears " + counts[i] + ((counts[i] == 1? " time": " times")));
}
}
System.out.println("");
int[] counts2 = countDigits(s);
for (int i = 0; i <counts2.length; i++){
System.out.println(i + " appears " + counts2[i] + " times " );
}
}
public static int[] countDigits(String s){
int[] counts = new int[10];
for (int i = 0; i <s.length(); i++){
if (Character.isDigit(s.charAt(i))){
counts[(int)s.charAt(i - '0')]++;
}
}
return counts;
}
public static int[] countletters(String s){
int[] counts = new int[26];
for(int i = 0; i < s.length(); i++){
if (Character.isLetter(s.charAt(i))){
counts[(s.charAt(i) - 'a')]++;
}
}
return counts;
最佳答案
问题出在这一行:
counts[i]++;
应该是:
counts[(int)s.charAt(i) - '0']++;
关于java - 计算字符串中数字出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20647405/