据我的调试结果看,如果你输入"*",系统会自动转为字符"a",所以会转到默认的情况。我把条件"*"改成了"a",就行了。不过这是为什么,就请高手说明了!
public class MainParameters
{
public static void main(String args[])
{
int x, y;
char op;
String str=" ";
x =Integer.parseInt(args[0]);
y =Integer.parseInt(args[1]);
op=args[2].charAt(0);
switch(op)
{
case '+' : str=str+x+" + "+y+" = "+(x+y); break;
case '-' : str=str+x+" - "+y+" = "+(x-y); break;
case 'a' : str=str+x+" * "+y+" = "+(x*y); break;
case '/' : str=str+x+" / "+y+" = "+(x/y); break;
default : System.out.println("不能识别的运算符 "+op);
System.exit(0);
}
System.out.println(str);
}
}
public class MainParameters
{
public static void main(String args[])
{
int x, y;
char op;
String str=" ";
x =Integer.parseInt(args[0]);
y =Integer.parseInt(args[1]);
op=args[2].charAt(0);
switch(op)
{
case '+' : str=str+x+" + "+y+" = "+(x+y); break;
case '-' : str=str+x+" - "+y+" = "+(x-y); break;
case 'a' : str=str+x+" * "+y+" = "+(x*y); break;
case '/' : str=str+x+" / "+y+" = "+(x/y); break;
default : System.out.println("不能识别的运算符 "+op);
System.exit(0);
}
System.out.println(str);
}
}
java MainParameters 1 3 "*"
原因还没搞清,可能是*有特殊含义,关注!
果然是高手,多谢指点!
所以当你当参数输入时系统会自动当命令处理
也就是罗列出你当前路径的所有文件
于是你的参数个数就是你当前路径的文件个数(当然在你的程序里是指args[2]以后的个数)
而且参数顺序跟文件的排列顺序一至
你可以把*号写在""双引号里面就可以了
至于要彻底解决
目前我也不清楚
我以前也是遇到这样的情况的
后来是跟用户讨论换另一个字符的
如果可能,你也可以换另一个字符
如果你在你的程序里面加上
for(int i=2;i<args.length;i++){
System.out.println(args[i]);
}//end for i在运行
1 2 *你就知道了!祝你好运!