各位前辈:
        我在调试一道这样的程序:
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;public class Example6 extends Applet implements TextListener
{
TextArea text1,text2;
public void init()
{
text1=new TextArea(" ",10,30);
text2=new TextArea(" ",10,30);
add(text1);add(text2);
text2.setEditable(false);
text1.addTextListener(this);
}

public void textValueChanged(TextEvent e)
{
if(e.getSource()==text1)
{
String s=text1.getText();
double a[]=new double[50];
StringTokenizer fenxi=new StringTokenizer(s ," ,'\n'");
//空格,回车,逗号
int n=fenxi.countTokens();
for(int i=0;i<=n-1;i++)
{
String temp=fenxi.nextToken();
a[i]=Double.valueOf(temp).doubleValue();
}

for(int i=0;i<=n-1;i++)
{
for(int j=i+1;j<=n-1;j++)
{
if(a[j]<=a[i])
{ double t=a[j];a[j]=a[i];a[i]=t;}
}
}


text2.setText(null);
for(int i=0;i<n;i++)
{ text2.append(" " + a[i] + ", ");}
}
}
}1:输入负数时,抛出异常如下:
java.lang.NumberFormatException: For input string: "-"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
        at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1
213)
        at java.lang.Double.valueOf(Double.java:184)
        at Example6.textValueChanged(Example6.java:30)
        at java.awt.TextComponent.processTextEvent(TextComponent.java:651)
        at java.awt.TextComponent.processEvent(TextComponent.java:621)
        at java.awt.Component.dispatchEventImpl(Component.java:3598)
        at java.awt.Component.dispatchEvent(Component.java:3439)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:197)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)        at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
2:我对异常机制的原理不明白,不知道什么时候才用?
3:对学习异常机制的原理有什么好的建议 或 参考书吗?
谢谢你的关注和帮助!!!

解决方案 »

  1.   

    java.lang.NumberFormatException: For input string: "-"
    这里说的是"-"格式化为数字的时候出了问题
    你声明的类型,或者转换的类型有负数吗
      

  2.   

    import java.text.*;
    ....
    ....
    for(int i=0;i<=n-1;i++)
    {
    String temp=fenxi.nextToken();
    NumberFormat formatter =  new DecimalFormat("###,###0.###");
    a[i]=formatter.parse(temp).doubleValue();
    }
      

  3.   

    java 的异常
    看看网络上的资料吧,主要的建议是
    如果可以的话,尽量不要用查异常,有时候会让代码运行速度大大减慢
      

  4.   

    //非常感谢
    loulou82 前辈的提示让我学会自定义格式,编译时提示要设置异常检查,
    忽略候运行,结果输入负数是但还是抛出异常!//java.lang.NumberFormatException: For input string: "-"
    这里说的是"-"格式化为数字的时候出了问题
    你声明的类型,或者转换的类型有负数吗?//我还是不明白
    1:我应该怎样做才能,在输入负数时不抛出异常?
    2:怎样声明的类型,或者转换的类型有负数?
    3:Double.valueOf() 方法的定义真的不支持带负数的情况吗?