class p232
{
public static void main(String args[])
{
int a=50,b=40;
char n;
n=args[0].charAt(0);
System.out.println(args[0]);
System.out.println(n);
switch (n)
{
case '+':
System.out.println("两个数的和是"+(a+b));
break;
case '-':
System.out.println("两个数的差是"+(a-b));
break;
case '*':
System.out.println("两个数的积是"+(a * b));
break;
case '/':
System.out.println("两个数的商是"+(a / b));
break;
}
}
}
当我从命令行参数输入乘法符号‘*’时,程序啥结果都不显示,但是当乘法符号后面随便输入什么就能认出乘法符号,请问这是为什么,谢谢。

解决方案 »

  1.   

    D:\>java p232 *
    arg[0]:comment.htt;
    n:cD:\>java p232 *.*
    arg[0]:comment.htt;
    n:cD:\>java p232 *.
    arg[0]:cvs;
    n:cD:\>java p232 *.
    arg[0]:a;
    n:aD:\>java p232 *1
    arg[0]:Downloads;
    n:DD:\>java p232 *2
    arg[0]:新建文件夹(2);
    n:新D:\>java p232 *3
    arg[0]:*3;
    n:*
    两个数的积是2000---------------------------我好奇的是*1,*2
    为什么和*3有所不同
      

  2.   

    呵呵,这是为什么。谁能说明白,java p232 “*”  这样也不会错
      

  3.   

    在dos下命令行中"*"是作为文件的通配符来用的,如dir *.*
    就是列出目录下所有的文件所以
    java Foo *
    中的“*”可能被先被windows命令程序解析成文件名,再送到java命令里了我的看法
      

  4.   

    我把程序改了一下:
    public static void main(String args[]){
        tryDo(new String[]{"*"});
    }
    tryDo中是和楼主一样的程序.
    1--->tryDo(new String[]{"*"});--->两个数的积是2000
    2--->tryDo(new String[]{"*.*"});--->两个数的积是2000看来是在输入参数的时候出了问题
      

  5.   

    确实有这个现象,像*,|,>>之类的符号,在命令行中有着特殊的含义。
    例如: java p232 "*" >>1.txt
          这个命令会将原本应该在控制台中显示的内容重定向到1.txt文件中。这里需要使用双引号来做转义(如果需要双引号的话,可以使用\")。另外一种常见的情况是:在命令行中,有时候我们需要输入一个带空格的参数,例如:
    java p232 this is a test string
    很显然这样的写法,会被认为是5个参数。如果我们想将其作为一个参数的话,那么我们需要这样:
    java p232 "this is a test string"
            
    类似的例子还很多,比如:
    >cd "Program Files"