自带设计的类,带有ArrayList帮助!@!

时间:2014-02-12 15:57:28

标签: java class debugging arraylist symbols

 //  This class reads in integers and puts the values into a set
  2 
  3 import java.util.ArrayList;
  4 import java.util.*;
  5 
  6 class Set {
  7 
  8     private ArrayList<Integer> members;
  9     private static int quantity = 0;
 10     
 11     // Constructors 
 12     public Set()    {
 13         new ArrayList<Integer>();
 14     }
 15     
 16     public Set(int member){
 17         new ArrayList<Integer>();
 18         addMember(member);
 19         quantity++;
 20     }
 21     //  Accessors
 22     public static int getQuantity() {
 23         return quantity;
 24     }   
 25     
 26     //  Mutators
 27     public void addMember(int member)   {
 28         members.add(member);
 29     }   
 30     // toString() method
 31     public String toString() {
 32         int i;
 33         System.out.print("[");
 34         for(i=0; i<getQuantity(); i++){
 35             System.out.print(this.get(i));
 36             if(i+1 == getQuantity())
 37                 System.out.println("]");
 38             else
 39                 System.out.print(", ");
 40         }       
 41     }   
 42     
 43     // Return true if 'this' is a subset of 'set', 
 44     // otherwise return false.
 45     public boolean isSubset(Set set) {
 46         if(this.contains(set))
 47             return true;
 48         else
 49             return false;
 50     }
 51     // Return true if 'this' is equals to 'obj',
 52     // Otherwise return false
 53     public boolean equals(Set set)  {
 54         return (this.contains(set) && set.contains(this));
 55     }
 56 }

所以这是我第一次使用ArrayList类创建自己的类。以前我用原始数据类型创建了自己的类,但是现在因为有一个ArrayList,我会混淆要放入的构造函数,访问器和变换器(我应该把'this'引用等等)。

Set.java:35: error: cannot find symbol
                        System.out.print(this.get(i));
                                             ^
  symbol: method get(int)
Set.java:46: error: cannot find symbol
                if(this.contains(set))
                       ^
  symbol: method contains(Set)
Set.java:54: error: cannot find symbol
                return (this.contains(set) && set.contains(this));
                            ^
  symbol: method contains(Set)
Set.java:54: error: cannot find symbol
                return (this.contains(set) && set.contains(this));
                                                 ^
  symbol:   method contains(Set)
  location: variable set of type Set
4 errors

这些是我不断得到的4个错误。除此之外。任何人都可以帮助我使用正确的语法,使用ArrayList创建一个类,以及访问器mutators构造函数等。

这里的代码可能存在很多缺陷。非常感谢帮助。就像我蒙着眼睛一样:/

2 个答案:

答案 0 :(得分:0)

this是对类Set的当前实例的引用。在该类实例中,您有一个名为members的成员,它是对ArrayList的引用。

尝试调用该类实例的方法时,必须为其指定正确的变量名。

members.get(i)

members.contains(set) && set.members.contains(this)

答案 1 :(得分:0)

首先:

在实例方法或构造函数中,this是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用此方法从实例方法或构造函数中引用当前对象的任何成员。 在这里,您应该使用实例化的数组列表成员而不是this

同样在toString中你还没有添加return语句,因为它根据你的方法定义返回String。我已经做了修改,删除你现在可能根据你的要求改变的那些错误。

import java.util.ArrayList;
   import java.util.*;

   class Set {

      private ArrayList<Integer> members;
       private static int quantity = 0;

      // Constructors 
      public Set()    {
          new ArrayList<Integer>();
      }

      public Set(int member){
          new ArrayList<Integer>();
          addMember(member);
          quantity++;
      }
      //  Accessors
      public static int getQuantity() {
          return quantity;
      }   

     //  Mutators
      public void addMember(int member)   {
          members.add(member);
      }   
      // toString() method
      public String toString() {
          StringBuilder string =  new StringBuilder();
          int i;
          System.out.print("[");
          string.append("[");
          for(i=0; i<getQuantity(); i++){
              System.out.print(members.get(i));
              string.append(members.get(i));
              if(i+1 == getQuantity())
                 System.out.println("]");
              else
                  System.out.print(", ");
          }  
         String returnString = string.toString();
          return returnString;
      }   


    // Return true if 'this' is a subset of 'set', 
      // otherwise return false.
      public boolean isSubset(Set set) {
          if(members.contains(set))
              return true;
          else
              return false;
      }
      // Return true if 'this' is equals to 'obj',
      // Otherwise return false
      public boolean equals(Set set)  {
          return (members.contains(set));
      }
  }