我碰到一个这样的问题:
public class example {
public static void main(String[] args) {
        String str;
        int[] sum=new int[10];
        str=JOptionPane.showInputDialog("请输入一个16位的整数");
        System.out.println("str="+str);
        for(int i=0;i<str.length();i++)
        {
            System.out.print(str.charAt(i)+"\t");
            switch((int)str.charAt(i))
            {
                case 0: sum[0]++;
                        break;
                case 1: sum[1]++;
                        break;
                case 2: sum[2]++;
                        break;
                case 3:sum[3]++;
                        break;
                case 4:sum[4]++;
                        break;
                case 5:sum[5]++;
                        break;
                case 6:sum[6]++;
                        break;
                case 7:sum[7]++;
                        break;  
                case 8:sum[8]++;
                        break; 
                case 9:sum[9]++;
                        break;       
            }
        }
        System.out.println();
        for(int i=0;i<10;i++)
        {
            System.out.println(i+"出现了 "+sum[i]+"次");
        }
    }
}
但是无论输入什么样的结果,但数组中的元素都是0。
运行结果如下:
str=1548796532145879 0出现了 0次
1出现了 0次
2出现了 0次
3出现了 0次
4出现了 0次
5出现了 0次
6出现了 0次
7出现了 0次
8出现了 0次
9出现了 0次

解决方案 »

  1.   

    switch((int)str.charAt(i))
    --------------------------
    我认为是这里的问题。
      

  2.   

    ((int)str.charAt(i))这句话有问题
    str.charAt(i)返回一个char型的结果,再((int)str.charAt(i))会取得它的ascii码。
      

  3.   

    改了一点点,楼主输入16位数的时候要输入包括1,2,3 的,看看输出结果,就明白了
    import javax.swing.*;
    public class example {
    public static void main(String[] args) {
    String str;
    int[] sum = new int[10];
    System.out.println("shuzu "+ sum[0]);
    str = JOptionPane.showInputDialog("请输入一个16位的整数");
    System.out.println("str=" + str);
    for (int i = 0; i < str.length(); i++) {
    System.out.print(str.charAt(i) + "\t");
    System.out.print((int)str.charAt(i) + "\t");
    switch ((int) str.charAt(i)) {
    case 49:
    sum[0]++;
    break;
    case 50:
    sum[1]++;
    break;
    case 51:
    sum[2]++;
    break;
    case 3:
    sum[3]++;
    break;
    case 4:
    sum[4]++;
    break;
    case 5:
    sum[5]++;
    break;
    case 6:
    sum[6]++;
    break;
    case 7:
    sum[7]++;
    break;
    case 8:
    sum[8]++;
    break;
    case 9:
    sum[9]++;
    break; }
    } for (int i = 0; i < 10; i++) {
    System.out.println(i + "出现了 " + sum[i] + "次");
    }
    }
    }
      

  4.   

    呵呵,直接用字符就好。case '1':