关于java的问题 exception in thread "main".....

来源:百度知道 编辑:UC知道 时间:2024/05/10 22:45:35
我是新学java的菜鸟 同学帮我设置好了环境 一部分程序能成功编译和运行
可是遇到这个程序
//Hello.java
public class Hello{
String name;
public Hello(String name){
this.name=name;}
private void show(){
System.out.println("Hello!"+name);}
public static void main(String[] args){
Hello h=new Hello(args[0]);
h.show();
}
}
运行时 就出来这个exception in thread "main" java.lang.arrayindexoutofboundsException:0
at Hello.main<Hello.java:9>

搞的头都大了 编译时没有问题 可就是一运行就有那个了
还麻烦高手赐教 到底是什么原因
如果是环境设置的问题 那为什么有的程序能够成功呢?

Hello h=new Hello(args[0]); 这句话有问题,数组越界违例,args的长度==0。你可以改为Hello h=new Hello("name"); 或者你也可以不做任何修改,在运行程序的时候传个参数给args,让它的长度==1. 如:java Hello name回车。 name为传给args的一个字符串参数。

数组下标越界,args初始长度为0,没有值,当然就不能访问args[0]了,运行cmd,
输入java hello xxx即可.

楼上说的对,问题出在这句
Hello h=new Hello(args[0]);
这时候args并没有值,长度是0,取第一个值抛错,你应该传一个字符串进去
Hello h=new Hello("name");

如:java Hello “name”

楼上两位说得对
你这个程序,抛出异常的原因是args没有值,导致它的长度为0,而你又这样引用了它args[0],显然超出了范围,如果在doc下问题这样运行:
java Hello 你想输入的字符串
就没有问题了

你在控制台(也就是DOS平台)运行的话就输入:java Hello 你想输入的字符串
记得要编译噢!
如果是IDE工具的话,那就要对应适当的IDE工具进行main方法传值了,你的程序已经没有问题了,你这程序报的异常是运行时异常,知道不?

楼上说的都对,你的问题就出在这里呀 呵呵!!