一道java编程题 求助

目的是统计每个数字在字符中出现的次数,可是零怎么就输出来后变成了除了数字以外的字符个数了啊???帮忙指点一下~importjavax.swing.JOptionPane;... 目的是统计每个数字在字符中出现的次数,可是零怎么就输出来后变成了除了数字以外的字符个数了啊???帮忙指点一下~
import javax.swing.JOptionPane;
public class eight_5 {
public static void main(String[] args)
{
String s="SSN is 343 32 4545 and ID is 434 34 4323";

int[]counts=count(s);String output="";
for(int i=0;i<10;i++)
{
if(counts[i]!=0)
output+=i+" "+"appears "+counts[i]+"\n";
}
JOptionPane.showMessageDialog(null,output);
}
public static int[]count (String s)
{
int[]counts=new int[10];
for(int i=0;i<s.length();i++)
{ int num=0;
if(Character.isDigit(s.charAt(i)))
num=Integer.parseInt(String.valueOf(s.charAt(i)));
counts[num]++;
}
return counts;
}
}
展开
 我来答
百度网友fb0596d
2012-09-18 · 超过16用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:53.4万
展开全部
int num=0;
if(Character.isDigit(s.charAt(i)))
num=Integer.parseInt(String.valueOf(s.charAt(i)));
counts[num]++;
这样写的话,如果 s.charAt(i) 是数字,那么 num 是正确的数值,否则如果 s.charAt(i) 不是数字的话,num 就总是。你这个写法等价于:
int num=0;
if(Character.isDigit(s.charAt(i))) {

num=Integer.parseInt(String.valueOf(s.charAt(i)));


counts[num]++;
这样的效果 counts[0] 的值等于所有不是数字的字母数量 加上 数字0的数量。

而按照想要达到的目的,你应该这样写:

int num=0;

if(Character.isDigit(s.charAt(i))) {

num=Integer.parseInt(String.valueOf(s.charAt(i)));

counts[num]++;

希望能给你点帮助。

if 语句,在后面 没有 {}的情况下,if 只能影响紧随其后的一条语句。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式