计算字符串中的数字 - 输出未正确打印

时间:2018-03-01 18:21:11

标签: java

我的问题是计算给定字符串中的数字, 这是代码:

public static void main(String[] args) {
    String s=" 1 3 4 5 22 3 2";
    int[] counts=count(s);
    for(int i=0;i<s.length();i++) {
        if(counts[i]==1) {
            System.out.println(s.charAt(i) + " appears " + counts[i] +" time");
        }
        else if(counts[i]!=1 && counts[i]!=0) {
            System.out.println(s.charAt(i) + " appears " + counts[i] +" times");
        }
    }
    }

public static int[] count(String s) {
int count[] =  new int[99];

for(int i=0;i<s.length();i++) {
if(Character.isDigit(s.charAt(i))){
    ***count[i]++;***
}
}
    return count;
}

所需的输出是,如果x出现不止一次,那么应该说 x出现n次,但我的输出是这样的Undesired Output

我加粗的部分是我对问题进行了本地化,我无法找到一种方法来访问,如果2出现不止一次,那么count [2]也必须获得+1值,I&#39 ;尝试使用从String到Int的转换,但似乎没有任何工作。提前谢谢!

2 个答案:

答案 0 :(得分:1)

那么,为什么不制作10号数组并保留数据。这样的事情:

public static void main(String[] args) {
    String s=" 1 3 4 5 22 3 2";
    int[] counts=count(s);
    for(int i=0;i<10;i++) 
        if(counts[i]==1) {
            System.out.println(i + " appears " + counts[i] +" time");
        }
        else if(counts[i]!=1 && counts[i]!=0) {
            System.out.println(i + " appears " + counts[i] +" times");
        }
}

public static int[] count(String s) {
    int count[] =  new int[10];

    for(int i=0;i<s.length();i++) 
        if(Character.isDigit(s.charAt(i)))
            count[(int)s.charAt(i) - (int)'0']++;

    return count;
}

答案 1 :(得分:1)

您有正确的检查以查看该字符是否为数字,您未正确执行的操作是递增正确的索引。您希望将字符转换为数字并将该数字用作索引。试试这个

public static int[] count(String s) {
    int count[] =  new int[10];

    for(int i=0;i<s.length();i++) {
        if(Character.isDigit(s.charAt(i)))
        {
            count[Character.getNumericValue(i)]++;
        }
    }
    return count;
}