java中能生成.class文件可是运行不了

来源:百度知道 编辑:UC知道 时间:2024/06/22 10:35:48
代码如下:

class isodd {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
int num = Integer.parseInt(args[0]);
String isodd ="输入的是";
if(num%2==0){
isodd +="偶数";
}
else {
isodd +="奇数";
System.out.println(isodd);

}

}

}
总是出现:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at isodd.main(isodd.java:9)
怎么回事?新手请教谢谢

你的程序首先有两个问题
第一个,Java明确规定,类名一定要大写,而你小写,虽然不会有错误,但是不规范。
第二个,System.out.println(isodd)地方不对,逻辑判断失误
但这两个错误都不会影响到程序正常运行。

而产生的错误是数组越界,为什么,因为你没有给数组传值啊,数组里面根本没东西。解决方法很简单,运行的时候,输入 java isodd 3,一定要给传值,可以传多个值,以空格分开,例如:java isodd 3 4 8 32,他只会判断第一个数是不是奇数或偶数

为什么main方法后面写 (String[] args) ,就说明它要接受一些参数,只是平时都是有JVM传送的,不用我们在意。但是你完全可以自己传值进去,所以你没有传值,却引用数组,肯定会产生错误。

你的程序标准应该是如此:
class Isodd {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
int num = Integer.parseInt(args[0]);
String isodd ="输入的是";
if(num%2==0){
isodd +="偶数";
}
else {
isodd +="奇数";

}
System.out.println(isodd);
}
}

ArrayIndexOutOfBoundsException 数组下标越界
isodd.java:9 在这个文件9行

int num = Integer.parseInt(args[0]); //这里似乎args没有分配空间(地址0不不存在)

Integer.parseInt()方法要求传入的字符串里的字符全是数字。
不好意思,我说错了,ls的应该