回 帖 发 新 帖 刷新版面

主题:新手请教

本人初学java,还请坛子里的牛人们扶一把。现在有一个问题,是关于异常处理的。
测试代码如下:
public class TestArgs {
    public static void main(String[] args) {    
        if(args.length<3) {
            System.out.println(
                "Usage: java TestArgs \"n1\" \"op\" \"n2\"");
            System.exit(-1);
        }
        try {
            double d1 = Double.parseDouble(args[0]);
        } catch (NumberFormatException e) {
            System.out.println("\"n1\" is incorrect input, please provide an INT");    } 
        try {
            double d2 = Double.parseDouble(args[2]);
        } catch (NumberFormatException e) {
            System.out.println("\"n2\" is incorrect input, please provide an INT");    }
        double d = 0;
        if(args[1].equals("+")) d = d1 + d2;
        else if(args[1].equals("-")) d = d1 - d2;
        else if(args[1].equals("x")) d = d1 * d2;
        else if(args[1].equals("/")) d = d1 / d2;
        else {
            System.out.println("Error operator!, Please enter correct \"op\"");
            System.exit(-1);
        }
        
    System.out.print(d);    
    }
}

可是编译时报错说: d1 和 d2 cannot find symbol。

我只是想用try...catch... 处理可能的 NumberFormatException。

还请高人指教。谢谢了。

回复列表 (共4个回复)

沙发


变量作用域的问题。将使用d1,d2,d3的语句放到try{}的花括号中去。比如以下方式:

public class TestArgs {
    public static void main(String[] args) {    
        if(args.length<3) {
            System.out.println(
                "Usage: java TestArgs \"n1\" \"op\" \"n2\"");
            System.exit(-1);
        }
        try {
            double d1 = Double.parseDouble(args[0]);
            double d2 = Double.parseDouble(args[2]);
               double d = 0;
               
            if(args[1].equals("+")) d = d1 + d2;
            else if(args[1].equals("-")) d = d1 - d2;
            else if(args[1].equals("x")) d = d1 * d2;
            else if(args[1].equals("/")) d = d1 / d2;
            else {
                System.out.println("Error operator!, Please enter correct \"op\"");
                System.exit(-1);
            }
            System.out.print(d);  
         } catch (NumberFormatException e) {
            System.out.println("\"n2\" is incorrect input, please provide an INT");  
        }  
    }
}

板凳


[color=000080][size=6][size=4][i][b]在练习交流中成长!交流群:85868042[/b][/i][/size][/size][/color]

3 楼

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

4 楼

Java C#编程爱好者联盟  QQ超级群号:36858648

public class TestArrary
{
     public static void main(String[] args)
     {
        
            int[] a=new int[] {1,9,3,4,5,7,8,6,2};//静态地初始化。
                 for(int i=0;i<a.length;i++)
                 {   
                     System.out.print(a[i]+" ");//按照顺序输出数组的值.
                 }
                 /*for(int i=0;i<args.length;i++)
                 {
                     System.out.println(args[i]);//输出命令行(java TestArrary a,b,c....)的参数。
                 }*/
         try 
         {
            if (args.length < 3) 
            {
                System.out
                        .println("Usage: java TestArray \"n1\"\"op\"\"n2\" ");
                System.exit(0);//系统正常退出.
            }
            double d1 = Double.parseDouble(args[0]);//把args[0]类型强制转换为double。
            double d2 = Double.parseDouble(args[2]);
            double d = 0;
            if (args[1].equals("+"))//如果args[1]和“+”符号一样,执行d=d1+d2.
                d = d1 + d2;
            else if (args[1].equals("-"))
                d = d1 - d2;
            else if (args[1].equals("x"))
                d = d1 * d2;
            else if (args[1].equals("/"))
                d = d1 / d2;
            else {
                System.out.println("错误的表达式!");
                System.exit(0);
            }
            System.out.println(d);
        }
         catch (Exception e)
        {
            System.out.println(e.toString());
        }
         
     }

}

我来回复

您尚未登录,请登录后再回复。点此登录或注册