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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 云水禅心 中级黑马   /  2013-10-27 08:47  /  1129 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 云水禅心 于 2013-10-27 18:26 编辑

以下这段代码,错误之处我已经找出来了一个,
修改之后编译还是不通过,不知道哪里还不对劲?
谢谢各位帮我查看查看。
其错误是:(1)public  static voidmain(String args[])这句错误,即内部类中的静态申明非法。
当内部类中定义了静态成员,该内部类必须是静态的。所以应该改成:public  void main(String args[])  

import java.util.ArrayList;      
class Data //外部类
{
      intval;
      public  class Test3  //内部类
      {
           public static void main(String args[])  //内部类中的静态成员。
           {
                       Data data = new Data();
                       ArrayList<Data>list = new ArrayList<Data>();
                      for(int i = 100; i < 103; i++)
                 {
                              data.val = i;
                              list.add(val);
                     
                      }
                      for (Data d : list)
                 {
                              System.out.println(d.val);
                      }
              }
           voidadd()void function()
           {
                 //intx = 6;
                 System.out.println("innner:"+Outer.this.x);
           }
           

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

5 个回复

正序浏览
谢谢帮忙   
我知道是什么原因了。
回复 使用道具 举报
To 金牌黑马 2013-10-27 16:28:25
报纸
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
  1. import java.util.ArrayList;         

  2. class Data  //外部类

  3. {

  4.         int val;

  5.         public static class Test3   //因为内部类中有静态成员 所以该内部类必须是静态的

  6.         {

  7.                 public  static  void main(String args[])  //这个是主函数的固定格式 不能修改 所以只能将类加静态

  8.                 {

  9.                                Data data = new Data();

  10.                                ArrayList<Integer> list = new ArrayList<Integer>();//因为下面list.add 添加的是整形的包装类 所以泛型要定义为Integer



  11.                                 for (int i = 100; i < 103; i++)

  12.                          {

  13.                                        data.val = i;

  14.                                        list.add(new Integer(data.val));//1、静态方法 不能直接调用外部类中非静态成员 只能对象调用 所以此处要用data.val
  15.                                                                                                             //2、集合中不能添加基本数据类型 所以要把data.val包装成整形对象添加

  16.                                 

  17.                                 }



  18.                         for (Integer d : list) //因为list中装的是整形对象 所以遍历后的结果也是Integer

  19.                         {

  20.                                       System.out.println(d);

  21.                         }

  22.                                                 new Test3().add();//静态调用非静态 只能对象调用


  23.                  }

  24.                  

  25.                  void add()

  26.                  {

  27.                         int x = 6;

  28.                         System.out.println("innner :"+x);

  29.                  }

  30.         }

  31. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
  1. import java.util.ArrayList;         
  2. class Data  //外部类
  3. {
  4.         int val;
  5.         public  class Test3   //内部类
  6.         {
  7.                 Public  static  void main(String args[])  //内部类中的静态成员。
  8.                 {
  9.                                Data data = new Data();
  10.                                ArrayList<Data> list = new ArrayList<Data>();

  11.                                 for (int i = 100; i < 103; i++)
  12.                          {
  13.                                        data.val = i;
  14.                                        list.add(val);
  15.                                
  16.                                 }

  17.                         for (Data d : list)
  18.                         {
  19.                                       System.out.println(d.val);
  20.                                }
  21.                  }
  22.                  
  23.                  void add()void function()
  24.                  {
  25.                         //int x = 6;
  26.                         System.out.println("innner :"+Outer.this.x);
  27.                  }
  28.         }
  29. }
  30.                
复制代码
这些就是全部代码了。
回复 使用道具 举报
你确定你把所有代码都复制上来了?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马