黑马程序员技术交流社区

标题: 习题一个,怎么一运行就出现异常提示? [打印本页]

作者: 黑马杜鹏    时间: 2013-4-1 18:47
标题: 习题一个,怎么一运行就出现异常提示?
本帖最后由 黑马杜鹏 于 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)"需要怎么修改,才能正常运行?





作者: 李尧    时间: 2013-4-1 18:57
卤煮,你的构造函数是Hello(String name)
创建对象时new Hello(args[0]) 传入的这个args[0]是什么意思?
你是想让name="args[0]"还是其他的什么意思......
作者: 陈圳    时间: 2013-4-1 19:00
  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.                         }
复制代码

作者: HM刘博    时间: 2013-4-1 19:02
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]改成字符串就行了

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

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

来跟我做~~~













作者: 周一川    时间: 2013-4-1 19:39

作者: 黑马19我最牛    时间: 2013-4-1 20:50


  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 10:57
谢谢各位朋友,坑爹的教科书,书上的习题的错误,意思是根据程序写出它的运行结果。{:soso_e146:}{:soso_e174:}{:soso_e145:}
作者: 山西_李帅    时间: 2013-4-2 16:12
楼主看你写的代码应该也是初学者,应该是你建立对象的那里args[0],这里写错了,你可以通过无参构造建立对象
hello h  = new hello();也可以通过有参构造建立对象,因为你上面定义了有参构造函数了,所以可以用。
hello h = new hello("张三");
直接传参,在建立对象的同时就对对象进行初始化。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2