// 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构造函数等。
这里的代码可能存在很多缺陷。非常感谢帮助。就像我蒙着眼睛一样:/
答案 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));
}
}