Jframe.java
import java.awt.BorderLayout;
import java.awt.FlowLayout;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Jframe extends JFrame{
    private int xo,yo;
    private int x1,y1;
    JTextField area1;
    JTextField area2;
    JTextField area3;
    JTextField area4;
    JPanel p1;
public Jframe(){
  p1=new JPanel();
  p1.setLayout(new FlowLayout());
  this.setLayout(new BorderLayout());
  if(area1==null){
  area1=new JTextField(80);}
  if(area2==null){
  area2=new JTextField(80);}
  if(area3==null){
  area3=new JTextField(80);}
  if(area4==null){
  area4=new JTextField(80);}   p1.add(area1);
  p1.add(area2);
  p1.add(area3);
  p1.add(area4);
  
  this.add(p1,BorderLayout.SOUTH);
  this.add(new add(xo,yo,x1,y1),BorderLayout.NORTH);
 //这里就是那个出错的地方
                    xo=Integer.parseInt(area1.getText().toString());
  yo=Integer.parseInt(area2.getText().toString());
  x1=Integer.parseInt(area3.getText().toString());
  y1=Integer.parseInt(area4.getText().toString());
  
  this.setTitle("DDA算法画直线");
  this.setBounds(200,200,400,400);
  this.setVisible(true);
  this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
  
}

         public static void main(String []args){
                Jframe frame=new Jframe();
 }} add.java
import java.awt.Color;
import java.awt.Graphics;import javax.swing.JPanel;
public class add extends JPanel{
//起始点
private int xo,yo;
//终点
private int x1,y1;

    add(int xo,int yo,int x1,int y1){
     this.xo=xo;
     this.yo=yo;
     this.x1=x1;
     this.y1=y1;
    
    
    }
public void paint(Graphics g){
int s=xo;
int q=yo;
double c=(y1-yo)/(x1-xo);
if(c<1){
if(xo>x1){
int t=xo;
xo=x1;
x1=t;
}
for(;xo<=x1;xo++){
  
  double t=yo;
  int n=(int)yo;
  yo+=c;
  if((t-n)>=0.5){
yo=n+1;  
  }
  else{
  yo=n;
  }
  g.setColor(Color.blue);
  g.drawLine(s,q,xo,yo);
}


}
else{
if(yo>y1){
int t=yo;
yo=y1;
y1=t;
        }
for(;yo<=y1;yo++){
double t=xo;
int n=(int)xo;
 xo+=1/c;
  if((t-n)>=0.5){
xo=n+1;  
  }
  else{
  xo=n;
  }
  g.setColor(Color.red);
  g.drawLine(s,q,xo,yo);


}

}

}
}报错:Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Jframe.<init>(Jframe.java:42)
at Jframe.main(Jframe.java:55)

解决方案 »

  1.   

    Exception in thread "main" java.lang.NumberFormatException: For input string: ""已经很明显了  数字格式化错误啊..
    不能把""格式化为一个整型  在格式化这前应该判断一下
    area1.getText() 不能为整数字符串之后的值...写正则表达式判断吧
      

  2.   

    并不是所有字符都可以解析为整数的
    try catch掉吧
      

  3.   

    this.add(new add(xo,yo,x1,y1),BorderLayout.NORTH);
    //这里就是那个出错的地方
      xo=Integer.parseInt(area1.getText().toString());
    yo=Integer.parseInt(area2.getText().toString());
    x1=Integer.parseInt(area3.getText().toString());
    y1=Integer.parseInt(area4.getText().toString());不知道这段代码是干什么的,即便是换成area.getText(),得出来的也会是零啊
    double c=(y1-yo)/(x1-xo);
    这里肯定是会抛异常的。考虑清楚你的逻辑吧
      

  4.   

    try catch (){赋默认值 0或者其他}