首页 新闻 搜索 专区 学院

try{} catch(){} 的时候不是按照顺序执行代码吗

0
悬赏园豆:5 [已解决问题] 解决于 2018-02-09 21:41

public class TestShiYan {
 public static void main(String[] args) {
  if(args.length != 3) {
   System.out.println("usage: java Test \"n1\" \"op\" \"n2\"");
  }
  double d1,d2;
  try{
   d1 = Double.parseDouble(args[0]);
  }
  catch(NumberFormatException ne) {
   System.out.println("输入的数字有错误");
   System.out.println(ne.getMessage());
   ne.printStackTrace();
  }
  try{
   d2 = Double.parseDouble(args[2]);
  }
   catch(NumberFormatException ne) {
   System.out.println("输入的数字有错误");
   System.out.println(ne.getMessage());
   ne.printStackTrace();

  }
   
  double d = 0;
  if(args[1].equals("+")){
   d = d1 + d2;
  }
  else if(args[1].equals("x")){
   d = d1 * d2;
  }
  if(args[1].equals("/")){
   d = d1 / d2;
  }
  else{
   System.out.println("输入的运算符不符合");
   System.exit(-1);
  }
  System.out.println(d);
 }
}

 

问题补充:

说变量d1 d2 没有初始化

一个小萌新的主页 一个小萌新 | 初学一级 | 园豆:199
提问于:2018-02-09 20:56
< >
分享
最佳答案
1

怎麼可能不是順序執行。

收获园豆:5
花飘水流兮 | 专家六级 |园豆:11500 | 2018-02-09 21:07

那为什么会显示没有给变量赋值啊··我赋值了啊

一个小萌新 | 园豆:199 (初学一级) | 2018-02-09 21:09

@一个小萌新: 把你的參數帶進去,調試跟一次不就明白了。

花飘水流兮 | 园豆:11500 (专家六级) | 2018-02-09 21:21

@花飘水流兮: e 我的这个需要编译之后再执行的时候输入参数 = =但是现在编译就出错很绝望啊

一个小萌新 | 园豆:199 (初学一级) | 2018-02-09 21:23

@一个小萌新: 你這是命令行參數哈,可以直接設置的。何況做事靈活點嘛 —— 你也還可以加一句設置args的代碼嘛。不就測試了。

好了,提示到此,動動手才能感悟和理解。

花飘水流兮 | 园豆:11500 (专家六级) | 2018-02-09 21:40
其他回答(2)
0

变量弄成静态变量

一个小萌新 | 园豆:199 (初学一级) | 2018-02-09 21:39
0

d1 d2 没有初始值;
你赋值是在try catch 的 try块赋值的, 出现异常会被catch捕获, 并不会终止程序运行, 所以可能存在d1,d2赋值的时候出现异常被捕获, 但是还会执行后面的代码, 所以这里在编译的阶段就会发现问题; 如果你在catch块再次 throw new RunException(); 的话, 你就发现可以编译通过了

、熙和 | 园豆:1486 (小虾三级) | 2018-02-10 10:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册