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 没有初始化
怎麼可能不是順序執行。
那为什么会显示没有给变量赋值啊··我赋值了啊
@一个小萌新: 把你的參數帶進去,調試跟一次不就明白了。
@花飘水流兮: e 我的这个需要编译之后再执行的时候输入参数 = =但是现在编译就出错很绝望啊
@一个小萌新: 你這是命令行參數哈,可以直接設置的。何況做事靈活點嘛 —— 你也還可以加一句設置args的代碼嘛。不就測試了。
好了,提示到此,動動手才能感悟和理解。
变量弄成静态变量
d1 d2 没有初始值;
你赋值是在try catch 的 try块赋值的, 出现异常会被catch捕获, 并不会终止程序运行, 所以可能存在d1,d2赋值的时候出现异常被捕获, 但是还会执行后面的代码, 所以这里在编译的阶段就会发现问题; 如果你在catch块再次 throw new RunException(); 的话, 你就发现可以编译通过了