import java.io.*;
//import java.lang.String.*;
public class A{
public static void main(String [] args){
if(args.length==3){
double a1=Double.parseDouble(args[0]);
double a2=Double.parseDouble(args[2]);
if(args[1].length()!=1){
System.out.println("Unrecoghized operator"+args[1]);
return;
} char operator=args[1].charAt(0);
double result;
switch(operator){
case '+':result=a1+a2;break;
case '*':result=a1*a2;break;
case '-':result=a1-a2;break;
case '/':result=a1/a2;break;
default:
System.out.println("Illegal operator");
return;
}
System.out.println(args[0]+args[1]+args[2]+"="+result);
}
else
System.out.println("MALFORMED Expression");
}
}为什么 用乘法就不行了呢?显示MALFORMED Expression,,,其他的都运算通过。。实在不理解。
//import java.lang.String.*;
public class A{
public static void main(String [] args){
if(args.length==3){
double a1=Double.parseDouble(args[0]);
double a2=Double.parseDouble(args[2]);
if(args[1].length()!=1){
System.out.println("Unrecoghized operator"+args[1]);
return;
} char operator=args[1].charAt(0);
double result;
switch(operator){
case '+':result=a1+a2;break;
case '*':result=a1*a2;break;
case '-':result=a1-a2;break;
case '/':result=a1/a2;break;
default:
System.out.println("Illegal operator");
return;
}
System.out.println(args[0]+args[1]+args[2]+"="+result);
}
else
System.out.println("MALFORMED Expression");
}
}为什么 用乘法就不行了呢?显示MALFORMED Expression,,,其他的都运算通过。。实在不理解。
你可以这样来传递:
java A 2 "*" 3
这样估计也可以,我没试过:
java A 2 \* 3
受教了,谢谢。
java A 2 "*" 3 这个是可以的,但是java A 2 \* 3是不行的。。
比如,ls *
实际上,这个*会被shell解释成当前目录下的文件列表(这个转换发生在执行ls命令之前),然后把这个列表作为参数传递给ls命令。
也就是说,ls得到的是一串参数,而不是一个。
和shell类似,*被cmd解释成当前目录下的参数。在bash中,\*与"*"具有一样的效果。所以我猜想在cmd中\*没准也可以。但是好像和我猜想的不太一样。
因为将*解释成当前目录下的文件是cmd的功能,跟eclipse没关系。
建议你将*换成x,这样比较好理解,也比较好操作。