java - 计算字符串中数字出现的次数

标签 java

我有一个实验室,涉及计算字符串中的数字数量和数字字母。实际上,我从我的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/

相关文章:

java - 访问其他类中的变量(Java)

java - 我如何开始在 Eclipse 中设计 portlet?

java - 在大文本中寻找句子的最佳/最佳算法

java - 使用 Jackson 解压缩时出现 json 解析器异常

java - 从Ant到Gradle:可执行的JAR转换

java - 断言 junit 中 float 的不等式

Java 输出给我 "Infinity"

java - 使用Java和Jersey对以categoryID为键的类别进行JSON反序列化

java - 递归/多线程程序问题

java - 运行在 1.6 JVM 上的 Jetty 无法运行在 Java 1.6 上编译的 webapp