java吧 关注:1,190,542贴子:12,603,910
  • 2回复贴,共1

关于捕获异常并返回执行问题

只看楼主收藏回复

题目要求是先让用户选择输入double类型或者int类型的数,然后输入想要输入多少数字,然后计算输入的数字的总和。在执行过程中捕获“输入字符型”的异常。如果捕获到异常,返回用户界面重新选择。
我以下代码执行过程中捕获到异常后就一直死循环,求大神支出错误并优化代码!谢了!
2楼放上代码:


IP属地:河南1楼2014-08-09 13:46回复
    import java.util.ArrayList;import java.util.Iterator;import java.util.Scanner; import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction; import org.omg.CORBA.PUBLIC_MEMBER; public class Exploring { public static void main(String[] args) { ArrayList<Double> doublearray=new ArrayList<Double>(); ArrayList<Integer> intarray=new ArrayList<Integer>(); Scanner sc=new Scanner(System.in); int i = 0; int flag=0; do{ try { do { flag=0; i=0; System.out.println("whether you would like to enter?\n1.double values.\n2.int values."); i=sc.nextInt(); switch (i) { case 1:System.out.print("Please enter how many values you want to:"); int num=sc.nextInt(); for(int j=0;j<num;j++) { System.out.print("please enter the "+(j+1)+"number:"); doublearray.add(sc.nextDouble()); } double sum=0; for(Iterator it=doublearray.iterator();it.hasNext();) { sum=sum+((Double)it.next()).doubleValue(); } System.out.println(sum); break; case 2:System.out.print("Please enter how many values you want to:"); int num1=sc.nextInt(); for(int j=0;j<num1;j++) { System.out.println("please enter the "+(j+1)+"number:"); intarray.add(sc.nextInt()); } int sum1=0; for(Iterator it=doublearray.iterator();it.hasNext();) { sum1=sum1+((Integer)it.next()).intValue(); } break; default:System.out.println("Waring:Your enter is wrong,please enter 1 or 2!"); break; } }while(i!=1&&i!=2); } catch(Exception e) { flag=1; System.out.println("Your enter is illeagl!"); break; } }while(flag==1); }}


    IP属地:河南2楼2014-08-09 13:47
    回复
      import java.util.ArrayList;
      import java.util.Iterator;
      import java.util.Scanner;
      import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;
      import org.omg.CORBA.PUBLIC_MEMBER;
      public class Exploring
      {
      public static void main(String[] args)
      {
      ArrayList<Double> doublearray=new ArrayList<Double>();
      ArrayList<Integer> intarray=new ArrayList<Integer>();
      Scanner sc=new Scanner(System.in);
      int i = 0;
      int flag=0;
      do{
      try
      {
      do
      {
      flag=0;
      i=0;
      System.out.println("whether you would like to enter?\n1.double values.\n2.int values.");
      i=sc.nextInt();
      switch (i)
      {
      case 1:System.out.print("Please enter how many values you want to:");
      int num=sc.nextInt();
      for(int j=0;j<num;j++)
      {
      System.out.print("please enter the "+(j+1)+"number:");
      doublearray.add(sc.nextDouble());
      }
      double sum=0;
      for(Iterator it=doublearray.iterator();it.hasNext();)
      {
      sum=sum+((Double)it.next()).doubleValue();
      }
      System.out.println(sum);
      break;
      case 2:System.out.print("Please enter how many values you want to:");
      int num1=sc.nextInt();
      for(int j=0;j<num1;j++)
      {
      System.out.println("please enter the "+(j+1)+"number:");
      intarray.add(sc.nextInt());
      }
      int sum1=0;
      for(Iterator it=doublearray.iterator();it.hasNext();)
      {
      sum1=sum1+((Integer)it.next()).intValue();
      }
      break;
      default:System.out.println("Waring:Your enter is wrong,please enter 1 or 2!");
      break;
      }
      }while(i!=1&&i!=2);
      }
      catch(Exception e)
      {
      flag=1;
      System.out.println("Your enter is illeagl!");
      break;
      }
      }while(flag==1);
      }
      }


      IP属地:河南3楼2014-08-09 13:48
      回复