帮忙检验java代码,按理说按钮文本会改变,但什么都没发生(如下代码不明白的请问)
ok.addMouseListener(newMouseAdapter(){publicvoidmouseClicked(MouseEvente){Stringstf=t...
ok.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e ) {
String stf=tf.getText();
char []ctf=stf.toCharArray();
StringBuilder []sbtf=new StringBuilder[stf.length()];
String []sstf=new String[stf.length()];
int []itf=new int [stf.length()];
int i = 0;
for (char tem:ctf)
{
sbtf[i].append(tem);
sstf[i]=sbtf[i].toString();
i++;
}
i=0;
int n=0;
for(String ss:sstf)
{
try
{
itf[n]=Integer.parseInt(ss);
n++;
}
catch(Exception ex)
{
}
i++;
}
String st=new String((new StringBuilder().append(itf[0])).toString());
ok.setText(st);
}
}); 展开
public void mouseClicked(MouseEvent e ) {
String stf=tf.getText();
char []ctf=stf.toCharArray();
StringBuilder []sbtf=new StringBuilder[stf.length()];
String []sstf=new String[stf.length()];
int []itf=new int [stf.length()];
int i = 0;
for (char tem:ctf)
{
sbtf[i].append(tem);
sstf[i]=sbtf[i].toString();
i++;
}
i=0;
int n=0;
for(String ss:sstf)
{
try
{
itf[n]=Integer.parseInt(ss);
n++;
}
catch(Exception ex)
{
}
i++;
}
String st=new String((new StringBuilder().append(itf[0])).toString());
ok.setText(st);
}
}); 展开
3个回答
展开全部
应该有运行时错误吧?
StringBuilder []sbtf=new StringBuilder[stf.length()];
定义了StringBuilder数组,但是下面的for循环中直接使用
sbtf[i].append(tem);
很明显,sbtf中的StringBuilder未初始化,会报空指针异常。
StringBuilder []sbtf=new StringBuilder[stf.length()];
定义了StringBuilder数组,但是下面的for循环中直接使用
sbtf[i].append(tem);
很明显,sbtf中的StringBuilder未初始化,会报空指针异常。
追问
请问怎么改比较好??
还有,你看懂我的代码是干嘛吗?看懂了比较好回答
追答
好吧,我仔细看了下你的代码,目前的版本 作用是用JTextfield中输入字符串的第一位 替换JButton的标签
但是有几个问题,所以上述代码目前是跑不起来的:
1. 之前说过, sbtf中的StringBuilder对象没有初始化
你可以在StringBuilder [] sbtf = new StringBuilder[stf.length()];后面加入以下语句
for(int i = 0; i < sbtf.length; i++)
sbtf[i] = new StringBuilder();
然后运行,在JTextfield中输入数字开头的字符串就可以看到预期结果
(但是如果输入的是字母开头的字符串,那依然会报错,错误如下)
2.如果输入字母开头的字符串,
itf[n]=Integer.parseInt(ss); 这一句会产生异常的,被空catch块捕获,最终结果
你的JButton标签会变成默认的0
展开全部
你这个代码确定运行的时候不会抛出空指针异常?这个StringBuilder[] sbtf = new StringBuilder[stf.length()];中的每一个sbtf[i]都没有进行初始化。。
这段代码要实现的应该是输入数字文本,然后装换成整型,将转换之后的结果在按钮ok上显示出来。这句String st=new String((new StringBuilder().append(itf[0])).toString());明显是只将首字符装换成int,然后显示出来,其他的根本没能显示。
这段代码要实现的应该是输入数字文本,然后装换成整型,将转换之后的结果在按钮ok上显示出来。这句String st=new String((new StringBuilder().append(itf[0])).toString());明显是只将首字符装换成int,然后显示出来,其他的根本没能显示。
追问
我实现的是将数据过滤,把文本域的文本parseInt,不成功的被catch
追答
对呀,但如果不把那个StringBuilder进行初始化,一运行就会抛空指针异常呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-02-07
展开全部
不知道啊不知道
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询