一java程序编译能通过却不能运行。

[复制链接]
查看11 | 回复3 | 2008-11-27 23:31:19 | 显示全部楼层 |阅读模式
下面为一计算加减乘除与取模运算的程序,但就是不能够运行。大家看看吧。
public class CaculationPro{
public static void main(String args[]){

String symbol="+-*/%";
int intSymbol=symbol.indexOf(args[1]);
if(intSymbol==-1){
System.out.println("命令格式是:java CaculationPro 5+6=");
System.out.println("命令格式是:第2个位置应该是运算符号\"+-*/%\"中的一种。");
System.exit(0);
}
if((args.length!=4)){
System.out.println("命令格式是:java CaculationPro 5+6=");
System.exit(0);
}
if(!args[3].equals("=")){
System.out.println("命令格式是:第4个位置应该是等号。");
System.exit(0);
}
double d1=0;
double d2=0;
try{
d1=Double.parseDouble(args[0]);
d2=Double.parseDouble(args[2]);
}catch(Exception e){
System.out.println("命令格式是:第1和第3个位置应该是数字。");
System.exit(0);
}
double res=0;
switch(intSymbol){
case 0:

res=d1+d2;break;
case 1:

res=d1-d2;break;
case 2:

res=d1*d2;break;
case 3:

res=d1/d2;break;
case 4:

res=d1%d2;break;
}
System.out.println(args[0]+args[1]+args[2]+args[3]+res);
}
}
下面为编译及运行:
F:\>javac CaculationPro.java
F:\>java CaculationPro 1+2=
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

at CaculationPro.main(CaculationPro.java:4)
哦,确实。但就算当成我只输入了一个参数也不应该是数组越界错误啊,才这么几个就越界了?

回复

使用道具 举报

千问 | 2008-11-27 23:31:19 | 显示全部楼层
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at CaculationPro.main(CaculationPro.java:4) ----------------------------------------------这是报的错误,数组越界。显然第四行 。 修改方法:传参数时每个字符串加空格,不加空格就会当成一个参数。java CaculationPro 1 + 2 =...
回复

使用道具 举报

千问 | 2008-11-27 23:31:19 | 显示全部楼层
java CaculationPro 1+2= 将参数之间用空格,否则作为一个参数了,所以报这个数组越界的错误··...
回复

使用道具 举报

千问 | 2008-11-27 23:31:19 | 显示全部楼层
那就不是程序的问题了,可能是运行程序需要的环境问题不对吧。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行