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