import java.util.ArrayList;
import java.util.Iterator;
public class TestTriangle{
  public static void main(String[] args){
    int i=0;
    ArrayList<GeometricObject>s=new ArrayList<GeometricObject>();
    GeometricObject s1=new Triangle(1.5,2.6,4.8);
    GeometricObject s2=new Triangle(1.5,2.5,3.5);
    GeometricObject s3=new Triangle(4.5,5.5,6.5);
    GeometricObject s4=new Triangle(3.0,4.0,5.0);
    s.add(s1);
    s.add(s2);
    s.add(s3);
    s.add(s4);    
    Iterator it=s.iterator();  
    while(it.hasNext())
    {     
      if(((Triangle)it.next()).isTriangle())
        {
         Triangle triangle=(Triangle)s.get(i);
          System.out.print("三角形的形状是:");
          System.out.print((triangle).getSide1()+"   ");
          System.out.print((triangle).getSide2()+"   ");
          System.out.println((triangle).getSide3()+"   ");
          System.out.print("三角形的面积是:");
          System.out.println((triangle).findArea()); 
        } 
     else
         System.out.println("输入的三条边不能构成三角形,请重输!");    
    }     
  }
}
C:\java>java TestTriangle
输入的三条边不能构成三角形,请重输!
三角形的形状是:1.5   2.6   4.8
三角形的面积是:NaN
三角形的形状是:1.5   2.6   4.8
三角形的面积是:NaN
三角形的形状是:1.5   2.6   4.8
三角形的面积是:NaN程序运行是没问题了!!!可是为什么得不出面积呢??? 还有 NaN 是什么意思呢???有人说是 " 表示算术表达式返回非数字值的特殊值" ;又有人说是 "是指未定义之变量!" NaN到底是什么啊???

解决方案 »

  1.   

    答:
    1)NaN表示表达式返回非数字值
    2)代码要修改。将while(it.hasNext()) 
        {      
          if(((Triangle)it.next()).isTriangle()) 
            { 
             Triangle triangle=(Triangle)s.get(i); 
              System.out.print("三角形的形状是:"); 
              System.out.print((triangle).getSide1()+"   "); 
              System.out.print((triangle).getSide2()+"   "); 
              System.out.println((triangle).getSide3()+"   "); 
              System.out.print("三角形的面积是:"); 
              System.out.println((triangle).findArea());  
            }  代码改为:while(it.hasNext()) 
        {      Triangle t = (Triangle)it.next();
          if(t.isTriangle()) 
            { 
             
              System.out.print("三角形的形状是:"); 
              System.out.print(t.getSide1()+"   "); 
              System.out.print(t.getSide2()+"   "); 
              System.out.println(t.getSide3()+"   "); 
              System.out.print("三角形的面积是:"); 
              System.out.println(t.findArea());  
            }