黑马程序员技术交流社区

标题: 这个段代码麻烦大家帮我看下哪里错了! [打印本页]

作者: THE_FUTURE    时间: 2014-8-21 17:47
标题: 这个段代码麻烦大家帮我看下哪里错了!
等下我会上传有关的图片
作者: THE_FUTURE    时间: 2014-8-21 17:50
帮我看下哪里错了 谢谢

5C6U()VEV3W$0FA[L_OZYPW.jpg (74.98 KB, 下载次数: 17)

5C6U()VEV3W$0FA[L_OZYPW.jpg

Z[@LNQ[JQZ]YDHLYG@65`LF.jpg (86.63 KB, 下载次数: 12)

Z[@LNQ[JQZ]YDHLYG@65`LF.jpg

作者: kakasa    时间: 2014-8-21 18:15
别截图啊

把person类放到外边去。。
作者: 象牙    时间: 2014-8-21 19:09
把person类放在外边,不要嵌套在里边
作者: 丨懒蟲灬Nigh    时间: 2014-8-21 21:16
楼上已经解答了。。。自己调试下撒
作者: 可无奈    时间: 2014-8-21 22:43
类里面不能写类,如果有办法能写的话可以回复让我受教下
作者: ximi    时间: 2014-8-21 22:55
  1. public class Test8 {

  2.         public static void main(String[] args) {
  3.                
  4.                 //实例化一个内部类
  5.                 Person p = new Test8().new Person();
  6.                 p.setAge(20);
  7.                 p.speak();
  8.         }
  9.         //内部类
  10.         class Person{
  11.                 private int age;

  12.                 public int getAge() {
  13.                         return age;
  14.                 }

  15.                 public void setAge(int age) {
  16.                         this.age = age;
  17.                 }
  18.                
  19.                 void speak(){
  20.                         System.out.println(age);
  21.                 }
  22.         }
  23.        
  24. }
复制代码

作者: ximi    时间: 2014-8-21 22:57
可无奈 发表于 2014-8-21 22:43
类里面不能写类,如果有办法能写的话可以回复让我受教下

public class Test8 {

        public static void main(String[] args) {
                /*//1. 初始化原始数组
                Integer[] originalArray = {4,2,4,6,1,2,4,7,8};
               
                //2. 初始化HashSet集合,因为HashSet集合使用了Map集合的key部分,所以可以自动的去除重复的key
                Set<Integer> setArray = new HashSet<Integer>(originalArray.length);
               
                //3. 将原始数组添加到HashSet集合中,这个过程就去除了重复的值了
                setArray.addAll(Arrays.asList(originalArray));
               
                //4. 打印输出结果
                System.out.println(Arrays.toString(setArray.toArray(new Integer[setArray.size()])));*/
                //显示的最大数+1
                /*int total = 10;
                for (int i = 1; i <= total; i++) {
                        //1. 打印空格
                        for (int x = 1; x <= i; x++) {
                                System.out.print(" ");
                        }
                        //2. 打印左边
                        for (int k = total - i; k >= 1; k--) {
                                System.out.print(k);
                        }
                        //3. 打印右边,从2开始
                        for (int j = 2; j <= total - i; j++) {
                                System.out.print(j);
                        }
                        //4. 打印换行
                        System.out.println();
                }*/
                //实例化一个内部类
                Person p = new Test8().new Person();
                p.setAge(20);
                p.speak();
        }
        //内部类
        class Person{
                private int age;

                public int getAge() {
                        return age;
                }

                public void setAge(int age) {
                        this.age = age;
                }
               
                void speak(){
                        System.out.println(age);
                }
        }
       
}

作者: Huberry    时间: 2014-8-21 23:58
可无奈 发表于 2014-8-21 22:43
类里面不能写类,如果有办法能写的话可以回复让我受教下

内部类就是在类内部的类,楼主这是定义错了
作者: Huberry    时间: 2014-8-22 00:05
楼主你写的是内部类
要创建内部类对象应该这样Person p = new Test8().new Person();

楼主代码中Person p = new Person(); //此处省略了一个this.即Test8.

而想要用类名直接调用的话,内部类要是静态的

楼主可以把内部类Person用静态修饰,估计就可以了



作者: 谢建平    时间: 2014-8-22 00:35
提示已经很清楚了额  无法从静态上下文中引用非静态 主函数是静态 你person 是非静态
作者: Nullifier    时间: 2014-8-22 17:38
可无奈 发表于 2014-8-21 22:43
类里面不能写类,如果有办法能写的话可以回复让我受教下

内部类算 类中写类么?




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