下面程序的功能是:在文本区text1中输入数字,在text2中将数字显示出来,并且显示他们的和。
用到了字符串分析。
但,用空格和逗号分割都没有问题,用回车分割时,总会在parseInt这个函数这儿抛出一个NumberFormatException异常,也就是说认为要转换的字符串格式不对。可我明明输入的就是简单的数字。哪位能帮忙看一下,谢谢了
   
import java.util.*;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;public class Test extends Applet implements TextListener
{
TextArea text1,text2;

public void init()

text1=new TextArea(6,15);
text2=new TextArea(6,15);
add(text1);add(text2);
text2.setEditable(false);
text1.addTextListener(this) ;
}

public void textValueChanged(TextEvent e)

if(e.getSource()==text1)
{
String s=text1.getText();
StringTokenizer fenxi=new StringTokenizer(s," ,'\n'");
int n=fenxi.countTokens();
int a[]=new int[n];
int sum=0;

for(int i=0;i<=n-1;i++)

String temp=fenxi.nextToken();
a[i]=Integer.parseInt(temp);
sum=sum+a[i];
}
 
text2.setText(null); //刷新显示.

for(int i=0;i<a.length;i++) 
              text2.append(a[i]+" ");
       
text2.append("\nsum is:"+sum+"\n");
}
}
}

解决方案 »

  1.   

    当然会出现异常,如果你输入的是一个字母的话就会异常
    可以抛出异常如下:
    import java.util.*;
    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;public class test extends Applet implements TextListener
    {
    TextArea text1,text2;public void init()
    {
    text1=new TextArea(6,15);
    text2=new TextArea(6,15);
    add(text1);add(text2);
    text2.setEditable(false);
    text1.addTextListener(this) ;
    }public void textValueChanged(TextEvent e)
    {
    if(e.getSource()==text1)
    {
    String s=text1.getText();
    StringTokenizer fenxi=new StringTokenizer(s," ,'\n'");
    int n=fenxi.countTokens();
    int a[]=new int[n];
    int sum=0;for(int i=0;i<=n-1;i++)
    {
    String temp=fenxi.nextToken();
    try{a[i]=Integer.parseInt(temp);}  //修改这里
    catch(NumberFormatException ee){}  //增加这里
    sum=sum+a[i];
    }text2.setText(null); //刷新显示.for(int i=0;i<a.length;i++)
                  text2.append(a[i]+" ");text2.append("\nsum is:"+sum+"\n");
    }
    }
    }
      

  2.   

    import java.util.*;
    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;public class test extends Applet implements TextListener
    {
    TextArea text1,text2;public void init()
    {
    text1=new TextArea(6,15);
    text2=new TextArea(6,15);
    add(text1);add(text2);
    text2.setEditable(false);
    text1.addTextListener(this) ;
    }public void textValueChanged(TextEvent e)
    {
    if(e.getSource()==text1)
    {
    String s=text1.getText();
    StringTokenizer fenxi=new StringTokenizer(s); //再修改这里就OK了
    int n=fenxi.countTokens();
    int a[]=new int[n];
    int sum=0;for(int i=0;i<=n-1;i++)
    {
    String temp=fenxi.nextToken();
    try{a[i]=Integer.parseInt(temp);}
    catch(NumberFormatException ee){}
    sum=sum+a[i];
    }text2.setText(null); //刷新显示.for(int i=0;i<a.length;i++)
                  text2.append(a[i]+" ");text2.append("\nsum is:"+sum+"\n");
    }
    }
    }
      

  3.   

    StringTokenizer fenxi=new StringTokenizer(s); //再修改这里就OK了默认是用空格和回车,换行等作为分割的,让我不解的是,为什么不能规定分隔符是", '\n'"也就是用逗号,空格和回车作为分割符?