具有 ArrayList HELP!@ 的自行设计类


 //  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 创建一个类,访问器突变器构造函数等。

这里的代码可能有很多缺陷。帮助将不胜感激。就像我蒙着眼睛做这件事:/

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

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

members.get(i)

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

首先:

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

同样在toString中,您没有添加 return 语句,因为它根据您的方法定义返回字符串。我已经进行了更改以删除您现在可以根据需要更改的那些错误。

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));
      }
  }

最新更新