站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题数组的问题:

数组的问题:

摘要: 数组的问题:


我碰到一个这样的问题:
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 {
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次



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



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



改了一点点,楼主输入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] + "次");
}
}
}


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


谢谢!


↑返回目录
前一篇: 请教一个算法
后一篇: jbuilder中debug怎么用?