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);    
/**    for(i=0;i<s.size();i++)     //第一种遍历方法;
    { 
      if(((Triangle)s.get(i)).isTriangle()==true)
        {
          System.out.print("三角形的形状是:");
          System.out.print(((Triangle)s.get(i)).getSide1()+"   ");
          System.out.print(((Triangle)s.get(i)).getSide2()+"   ");
          System.out.println(((Triangle)s.get(i)).getSide3()+"   ");
          System.out.print("三角形的面积是:");
          System.out.println(((Triangle)s.get(i)).findArea()); 
        } 
     else
         System.out.println("输入的三条边不能构成三角形,请重输!");    
    } */
    Iterator it=s.iterator();  //第二种遍历方法,须添加包  import java.util.Iterator;
    while(it.hasNext())
    {   
      if(((Triangle)s.get(i)).isTriangle()==true)
        {
          System.out.print("三角形的形状是:");
          System.out.print(((Triangle)s.get(i)).getSide1()+"   ");
          System.out.print(((Triangle)s.get(i)).getSide2()+"   ");
          System.out.println(((Triangle)s.get(i)).getSide3()+"   ");
          System.out.print("三角形的面积是:");
          System.out.println(((Triangle)s.get(i)).findArea()); 
        } 
     else
         System.out.println("输入的三条边不能构成三角形,请重输!");    
    }  
   
  }
}
第二个遍历,为什么不能输入我要的结果,而是反复的输出     输入的三条边不能构成三角形,请重输!"   

解决方案 »

  1.   

    Iterator it=s.iterator();  
        while(it.hasNext()) 
        {    
           Triangle t=(Triangle)it.next(); 
          if(t.isTriangle()) 
            { 
              System.out.print("三角形的形状是:"); 
              System.out.print(((Triangle)s.get(i)).getSide1()+"   "); 
              System.out.print(((Triangle)s.get(i)).getSide2()+"   "); 
              System.out.println(((Triangle)s.get(i)).getSide3()+"   "); 
              System.out.print("三角形的面积是:"); 
              System.out.println(((Triangle)s.get(i)).findArea());  
            }  
         else 
             System.out.println("输入的三条边不能构成三角形,请重输!");     
        }   
      

  2.   

    JDK 1.6中的增强for循环,可以对List,Iterator对象进行遍历