Java 我正在做一个项目,将计算不同容器(长方体、圆柱体、球体)的体积、平均体积和标准偏差

Java 我正在做一个项目,将计算不同容器(长方体、圆柱体、球体)的体积、平均体积和标准偏差,java,Java,我正在做一个项目,将计算不同容器(长方体、圆柱体、球体)的体积、平均体积和标准偏差 我为每个容器和抽象类(Shape)编写了一个类。在包含main方法的类中,我使用arrayList添加每个容器,但实际上我遇到的问题是,我创建了一个循环来提示用户他/她拥有哪种容器,在响应后,我可以调用正确的构造函数,但在对输入的第一个容器执行所有操作后,循环终止 我的主要方法代码如下: import java.util.*; class testShape { public static void ma

我正在做一个项目,将计算不同容器(长方体、圆柱体、球体)的体积、平均体积和标准偏差

我为每个容器和抽象类(Shape)编写了一个类。在包含main方法的类中,我使用arrayList添加每个容器,但实际上我遇到的问题是,我创建了一个循环来提示用户他/她拥有哪种容器,在响应后,我可以调用正确的构造函数,但在对输入的第一个容器执行所有操作后,循环终止

我的主要方法代码如下:

import java.util.*;
class testShape
{

   public static void main(String args [])
   throws java.io.IOException
   {

      double total = 0;
      int i,n;
      double deviation,average,sdeviation;
      double sd = 0;
      double s = 0;
      Scanner sc = new Scanner(System.in);

      ArrayList<Shape> shapelist = new ArrayList<Shape>();

      for(i=0;i<3;i++)
      {

         System.out.println("Enter shape: B for box,C for cylinder, S for sphere ");

         char c=(char)System.in.read();



         if((c=='B')||(c=='b'))
         {


            System.out.println("How many boxes do you have");
            n = sc.nextInt();
            for(i=0;i<n;i++){
               shapelist.add(new Box());
            }
            for(i=0;i<shapelist.size();i++)
            {
               System.out.println("--------"+shapelist.get(i).getShapeName() + "----------"); 
               System.out.println(shapelist.get(i).toString()); 
               System.out.println("The volume of "+shapelist.get(i).getShapeName()+""+(i+1)+" is "+shapelist.get(i).findVolume());  
               total = total+ shapelist.get(i).findVolume() ; 
            }

            System.out.println("-------------------\n");
            System.out.println("the total volume of"+shapelist.get(0).getShapeName()+" is: "+total+"\n");
            average= total/n;
            System.out.println("The average volume of "+shapelist.get(0).getShapeName()+" is: "+average);
            for(i=0;i<n;i++){

               deviation = (shapelist.get(i).findVolume()-average);
               s= deviation*deviation;
               sd = s+sd;
            }
            sdeviation =Math.sqrt(sd/n);
            System.out.println("the standard deviation is: "+sdeviation);
         }


         else  if((c=='C')||(c=='c')){
            System.out.println("How many cylinders do you have");

            n = sc.nextInt();
            for(i=0;i<n;i++){
               shapelist.add(new Cylinder());
            }
            for(i=0;i<shapelist.size();i++){
               System.out.println("--------"+shapelist.get(i).getShapeName() + "----------"); 
               System.out.println(shapelist.get(i).toString()); 
               System.out.println("The volume of "+shapelist.get(i).getShapeName()+""+(i+1)+" is "+shapelist.get(i).findVolume());  
               total = total+ shapelist.get(i).findVolume() ; 
            }
            System.out.println("-------------------\n");
            System.out.println("the total volume of"+shapelist.get(0).getShapeName()+" is: "+total+"\n");
            average= total/n;
            System.out.println("The average volume of "+shapelist.get(0).getShapeName()+" is: "+average);

            for(i=0;i<n;i++){
               deviation = (shapelist.get(i).findVolume()-average);
               s= deviation*deviation;
               sd = s+sd;
            }
            sdeviation =Math.sqrt(sd/n);
            System.out.println("the standard deviation is: "+sdeviation);
         }

         else if((c=='s')||(c=='S')){
            System.out.println("How many Sphers do you have");

            n = sc.nextInt();
            for(i=0;i<n;i++){
               shapelist.add(new Sphere());
            }
            for(i=0;i<shapelist.size();i++){
               System.out.println("--------"+shapelist.get(i).getShapeName() + "----------"); 
               System.out.println(shapelist.get(i).toString()); 
               System.out.println("The volume of "+shapelist.get(i).getShapeName()+""+(i+1)+" is "+shapelist.get(i).findVolume());  
               total = total+ shapelist.get(i).findVolume() ; 
            }
            System.out.println("-------------------\n");
            System.out.println("the total volume of"+shapelist.get(0).getShapeName()+" is: "+total+"\n");
            average= total/n;
            System.out.println("The average volume of "+shapelist.get(0).getShapeName()+" is: "+average);

            for(i=0;i<n;i++){
               deviation = (shapelist.get(i).findVolume()-average);
               s= deviation*deviation;
               sd = s+sd;
            }
            sdeviation =Math.sqrt(sd/n);
            System.out.println("the standard deviation is: "+sdeviation);
         }

         else 
            System.out.println("Invalid selection");


      }



   }  

}
import java.util.*;
类testShape
{
公共静态void main(字符串参数[])
抛出java.io.IOException
{
双倍合计=0;
inti,n;
双偏差、平均值、偏差;
双sd=0;
双s=0;
扫描仪sc=新的扫描仪(System.in);
ArrayList shapelist=新的ArrayList();

对于(i=0;iOnce)您在这里有答案,请将解决方案发布到。您需要大量重构代码。为什么不使用您拥有的scanner实例而不是
char c=(char)System.in.read()