作者:追梦的青春灬_176 | 来源:互联网 | 2023-06-09 08:01
我正在尝试在LineUp类中创建两个方法,一个名为totalMembers的方法,其中该方法将返回成员总数,而另一个称为totalKinds的方法执行相同的操作,但返回不同种类的动作的数量。 / p>
这是act类的代码,其中它创建了一个用于管理音乐节(某种)的程序
public class act {
private int num_members;
private String name;
private String kind;
private String stage;
public act(int num_members,String name,String kind,String stage) {
this.num_members = num_members;
this.name = name;
this.kind = kind;
this.stage = stage;
}
public act(int num_members,String kind) {
this.num_members = num_members;
this.name = name;
this.kind = kind;
stage = null;
}
public int getNum_members() {
return num_members;
}
public void setNum_members(int num_members) {
this.num_members = num_members;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public String getStage() {
return stage;
}
public void setStage(String stage) {
this.stage = stage;
}
public String toString() {
return "(" + num_members + "," + name + "," + kind + "," + stage + ")";
}
}
LineUp类表示这些行为,这是到目前为止的代码。我当时在考虑使用for循环来获取每个动作的成员数,但是由于它不是2D数组,所以很难做。对于获得各种不同的行为,我一无所知。如果有人能把我带向正确的方向,那就太好了。
import java.util.Arrays;
public class LineUp {
private act[] acts;
private int number;
private int memberSum;
public LineUp() {
acts = new act[30];
number = 0;
memberSum = 0;
}
public int numberOfacts() {
return number;
}
public int totalMembers() {
for(int i=0; i }
return memberSum;
}
public int totalKinds() {
}
public void addact(act a) {
if(number == 30)
System.out.println("The festival is full!");
else {
acts[number] = a;
number++;
}
}
public String toString() {
return acts + "";
}
public void Print() {
System.out.println(Arrays.toString(acts));
}
}
要正确建模行为,您必须使用actors。不,只是在开玩笑,为此感到抱歉。
评估act[]
的内容有很多不同的可能性。粗暴的,过时的版本会像这样
public int totalKinds() {
List unique = new ArrayList<>();
for (int i = 0; i if (!unique.contains(acts[i]))
unique.add(acts[i].getKind());
}
return unique.size();
}
例如您可以使用增强型for循环并利用以下事实:集合具有唯一元素:
public int totalKinds() {
Set unique = new HashSet<>();
for (Act a: acts) {
unique.add(a.getKind());
}
return unique.size();
}
当然,最灵活,最方便的方法是使用Java 8引入的流api。它确实使get acquainted受益匪浅。请注意,count()
返回Long
,而您需要int
,因此需要进行转换。
public int totalKinds() {
long count = Arrays.asList(acts).stream()
.map(act -> act.getKind())
.distinct()
.count();
return Math.toIntExact(count);
}