本帖最后由 u012942606 于 2014-08-09 13:49:15 编辑

解决方案 »

  1.   

    对了,上面代码把66行的break去掉!
      

  2.   


    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!");
                                    sc.nextLine();                           //关键问题在这里
    }
    }while(flag==1);
    }
    }在catch中添加了一行 sc.nextLine();   否则你最后一次输入的非数字的一直没有处理掉,一直循环抛出异常
      

  3.   

    谢谢你,问题解决了。我是初学者。有好多不懂的地方,请问怎么才能提高代码的可读性呢,是添加注释吗?
    对了还有,请问怎么用正则表达式判断10个纯字母字符串是从A-M开头的,还是从O-Z开头的,感觉无从下手,你能帮我举个例子吗?
      

  4.   

    谢谢你,问题解决了。我是初学者。有好多不懂的地方,请问怎么才能提高代码的可读性呢,是添加注释吗?
    对了还有,请问怎么用正则表达式判断10个纯字母字符串是从A-M开头的,还是从O-Z开头的,感觉无从下手,你能帮我举个例子吗?提高可读性
    1、能够独立的部分封装成方法
    2、尽量少用循环嵌套、if嵌套等
    3、变量命名遵循规则
    4、代码排版遵循规则
    5、尽量用while替换do while(个人意见),其实你完全可以用while替换的,只需要在while循环中判断条件break就可以了正则表达式
    10位A-M开头纯大写字母字符串
    [A-M][A-Z]{9}10位O-Z开头纯大写字母字符串
    [O-Z][A-Z]{9}代码如下: String regex1 = "[A-M][A-Z]{9}";
    String regex2 = "[O-Z][A-Z]{9}";
    String s1 = "BUIYOOPIKL";
    String s2 = "SUIYOOPIKL";
    System.out.println(s1.matches(regex1));
    System.out.println(s2.matches(regex1));
    System.out.println(s2.matches(regex2));
    System.out.println(s1.matches(regex2));
      

  5.   

    谢谢你,问题解决了。我是初学者。有好多不懂的地方,请问怎么才能提高代码的可读性呢,是添加注释吗?
    对了还有,请问怎么用正则表达式判断10个纯字母字符串是从A-M开头的,还是从O-Z开头的,感觉无从下手,你能帮我举个例子吗?提高可读性
    1、能够独立的部分封装成方法
    2、尽量少用循环嵌套、if嵌套等
    3、变量命名遵循规则
    4、代码排版遵循规则
    5、尽量用while替换do while(个人意见),其实你完全可以用while替换的,只需要在while循环中判断条件break就可以了正则表达式
    10位A-M开头纯大写字母字符串
    [A-M][A-Z]{9}10位O-Z开头纯大写字母字符串
    [O-Z][A-Z]{9}代码如下: String regex1 = "[A-M][A-Z]{9}";
    String regex2 = "[O-Z][A-Z]{9}";
    String s1 = "BUIYOOPIKL";
    String s2 = "SUIYOOPIKL";
    System.out.println(s1.matches(regex1));
    System.out.println(s2.matches(regex1));
    System.out.println(s2.matches(regex2));
    System.out.println(s1.matches(regex2));
    非常感谢,受教了!,
    以后学习过程中我会慢慢改正政协问题的