我是初学者,有个小问题求助:
/*创建一个程序,用于将两个整数值和一个运算符存储在相应的变量中,并执行必要的运算(使用switch语句)*/
class Operation1
{
public static void main (String args[])
{
int num = 0, num1 = Integer.parseInt (args[0]), num2 = Integer.parseInt (args[2]);
char operator1 = args[1].charAt(0);
switch (operator1)
{
case '+':
num = num1 + num2;
break;
case '-':
num = num1 - num2;
break;
case '*':
num = num1 * num2;
break;
case '/':
num = num1 / num2;
break;
case '%':
num = num1 % num2;
break;
}
System.out.print (String.valueOf (num1) + operator1 + String.valueOf (num2) + "=" + num);
}
}
程序内容如上;
但是运行的时候
如果我输入java Operation1 3 * 5
提示:
Exception in thread "main" java.lang.NumberFormatException:For input string:"Operation1.java"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Operation1.main(Operation1.java:7)
而如果“*”号用“+、-、/、%”代替则可以正常运行,请哪位高手有空的话帮个忙回答一下哈!
----------------解决方案--------------------------------------------------------
你的程序会出现这个问题,是因为你不了解“*”的用法
它在java当中充当一个通配符的作用,而不是乘号
如果你要把它做为乘号用的话,你必须经它加上一个双引号(“*”)
这个你就可以正常用到乘法的功能了
java Operation1 3 "*" 5
就正常了
----------------解决方案--------------------------------------------------------
好的,谢谢阿~~
----------------解决方案--------------------------------------------------------
你能把这一行和我说说吗?是什么意思啊?
args[1].为什么要加个1呢??
我是菜鸟,别笑我问的问题太菜啊
谢谢
----------------解决方案--------------------------------------------------------
char operator1 = args[1].charAt(0);
这表示从命令行的参数里面取第二个数(下标为1)
然后从这个数中取最前面那个字符(下标为0)
因为在JAVA中,下标都是从0开始的,所以取第n个数的时候,实际下标为(n-1)
----------------解决方案--------------------------------------------------------
回答的很出色!!
----------------解决方案--------------------------------------------------------