A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黑马杜鹏 于 2013-4-2 11:09 编辑

//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();
                        }
}
用javac.Hello能编译成功,java.Hello运行提示“Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0        
                                                                                        at Hello.main(Hello.java:16)"需要怎么修改,才能正常运行?




评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

9 个回复

倒序浏览
卤煮,你的构造函数是Hello(String name)
创建对象时new Hello(args[0]) 传入的这个args[0]是什么意思?
你是想让name="args[0]"还是其他的什么意思......
回复 使用道具 举报
  1. public static void main(String[] args)
  2.                         {
  3.                         Hello h=new Hello(args[0]);//args[0]是传给String[] args的一个值.要使用这个要在java Hello编译时在后面在运行时给予参数 运行命令改为:java Hello abc试下
  4.                         h.show();
  5.                         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
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("您好");//所以在new对象的时候也应该传入字符串
                        h.show();
                        }
}

将   Hello h=new Hello(args[0]);一句中的args[0]改成字符串就行了

点评

朋友你说对了,我换成"Hello h=new Hello("java语言");正常运行,谢谢。  发表于 2013-4-2 10:54

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
定义一个数组int[] arr = new int[1024*1024*1024] 或者 一个数组没有引用, 后赋一个null 就会报错了 一个空指异常,和数组过大的异常
回复 使用道具 举报
本帖最后由 黄小贝 于 2013-4-1 19:43 编辑

骚年,程序本身木有问题,是你跑的姿势有问题。。。。

来跟我做~~~












评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
回复 使用道具 举报


  1. //Hello.java

  2. public class Hello
  3. {
  4.                         String name;
  5.                         public Hello(String name)
  6.                         {
  7.                         this.name=name;
  8.                         }
  9.                         private void show()
  10.                         {
  11.                         System.out.println("Hello!"+name);
  12.                         }
  13.                         public static void main(String[] args)
  14.                         {
  15.                         Hello h=new Hello(args[0]);    //你这句里面传个args[0]  这个什么意思,这个是数组啊,但是你上面定义的构造函数是让穿String 类型的,也就是字符串啊!
  16.                         h.show();
  17.                         }
  18. }
复制代码

点评

朋友,正解。谢谢了。  发表于 2013-4-2 11:00

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
谢谢各位朋友,坑爹的教科书,书上的习题的错误,意思是根据程序写出它的运行结果。{:soso_e146:}{:soso_e174:}{:soso_e145:}
回复 使用道具 举报
山西_李帅 来自手机 中级黑马 2013-4-2 16:12:34
10#
楼主看你写的代码应该也是初学者,应该是你建立对象的那里args[0],这里写错了,你可以通过无参构造建立对象
hello h  = new hello();也可以通过有参构造建立对象,因为你上面定义了有参构造函数了,所以可以用。
hello h = new hello("张三");
直接传参,在建立对象的同时就对对象进行初始化。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马