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到底是什么啊???
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)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());
}