我在尝试将构造函数方法中分配的 String
和 String[]
保存到数组中然后将其打印出来时遇到问题。
该程序背后的想法是将一个人及其名字和答案添加到涂鸦程序中(在 voegDeelnameToe
中),然后通过 geefPollInfo()
打印出所有信息。
我尝试通过 voegDeelnameToe() 方法添加 6 人,但无法保存
String deelnemer
(= String '参与者姓名')
和
String[] aanwezigheden
(= String[] 'answers')
在另一个对象中,然后将其打印出来。
doodle.voegDeelnameToe("Bram",new String[]{"ja", "ja", "nee", "ja", "ja", "nee", "ja", "ja", "ja", "nee", "nee", "nee", "ja", "ja", "ja"});
doodle.voegDeelnameToe("Katja", new String[]{"nee", "nee", "ja", "nee", "nee", "nee", "ja", "nee", "ja", "ja", "nee", "ja", "ja", "nee", "ja"});
doodle.voegDeelnameToe("Kristien", new String[]{"ja", "ja", "ja", "ja", "nee", "nee", "nee", "nee", "nee", "ja", "nee", "ja", "ja", "nee", "ja"});
doodle.voegDeelnameToe("Peter", new String[]{"ja", "nee", "ja", "ja", "nee", "nee", "nee", "nee", "nee", "ja", "nee", "ja", "ja", "nee", "ja"});
doodle.voegDeelnameToe("Sven", new String[]{"nee", "nee", "ja", "ja", "nee", "nee", "nee", "nee", "nee", "ja", "nee", "ja", "ja", "ja", "ja"});
doodle.voegDeelnameToe("Matthias", new String[]{"ja", "ja", "ja", "ja", "nee", "ja", "nee", "nee", "nee", "ja", "nee", "ja", "ja", "nee", "ja"});
System.out.println(doodle.geefPollInfo());`
类(class):
public class Poll {
boolean type;
String titel;
String omschrijving;
String locatie;
String initiator;
final int MAX_DEELNEMERS = 10;
LocalDate[] data;
LocalTime[] tijdstippen;
String[] deelnemers = new String[] {"","","","","","",};
String[] antwoorden = new String[15];
String[][] poll = new String[6][15];
String einde = " ";
boolean afgesloten;
int teller = 1;
public Poll(String testBasispoll_1, String dit_is_de_eerste_basispoll, String location, String name, LocalDate[] data, LocalTime[] tijdstippen, boolean b) {
titel = testBasispoll_1;
omschrijving = dit_is_de_eerste_basispoll;
locatie = location;
initiator = name;
this.data = data;
this.tijdstippen = tijdstippen;
type = b;
}
public String geefPollInfo() {
System.out.println("Titel : " + titel);
System.out.println("Omschrijving : " + omschrijving);
System.out.println("Locatie : " + locatie);
System.out.println("Initiator : " + initiator);
System.out.println("Max aantal deelnemers : " + MAX_DEELNEMERS);
System.out.println("--------------------------------------------------------");
System.out.println("Dag \t \t" + data[0] + "\t \t" + data[1] + "\t \t" + data[2] + "\t \t" + data[3] + "\t \t" + data[4]);
System.out.println("Uur \t \t" + tijdstippen[0] + "\t" + tijdstippen[1] + "\t" + tijdstippen[2] + "\t" + tijdstippen[0] + "\t" + tijdstippen[1] + "\t" + tijdstippen[2] + "\t" + tijdstippen[0] + "\t" + tijdstippen[1] + "\t" + tijdstippen[2] + "\t" + tijdstippen[0] + "\t" + tijdstippen[1] + "\t" + tijdstippen[2] + "\t" + tijdstippen[0] + "\t" + tijdstippen[1] + "\t" + tijdstippen[2]);
for (int i = 0; i < 6; i++) {
System.out.println(deelnemers[i] + "\t");
}
for (int j = 0; j < 15; j++) {
System.out.print(antwoorden[j] + "\t");
}
return einde;
}
public boolean voegDeelnameToe(String deelnemer, String[] aanwezigheden) {
//for (int i = 0; i < 6; i++) {
for (int j = 0; j < 15; j++) {
antwoorden[j] = aanwezigheden[j];
}
// }
for (int i = 0; i < 6; i++) {
deelnemers[i] = deelnemer;
}
return type;
}
最佳答案
每次调用方法 voegDeelnameToe
时,都会(覆盖)写入 antwoorden 和 antwoorden 的所有元素。因此,只有最后一个人Matthias会留在投票中。建议:
将
voegDeelnameToe
签名修改为boolean voegDeelnameToe(int personIndex, String deelnemer, String[] aanwezigheden)
。然后跳过第二个 for 循环,只执行deelnemers[index] = deelnemer;
。我不确定在这种情况下您应该如何处理aanwezigheden
。在
Poll
中创建一个字段int index = 0;
,并在每次调用voegDeelnameToe
时递增它,只要它小于6。例如:deelnemers[index] = deelnemer; ++index;`
我必须指出,Poll
类中有一个字段 String[][] poll = new String[6][15];
,它似乎应该保存民意调查的结果。您可能应该为 6 个参与者中的每一个存储 aanwezigheden
?否则 antwoorden
每次都会被覆盖。例如,如果您在 Poll
的 int index = 0;
中添加一个字段,则 voegDeelnameToe
方法将如下所示:
public boolean voegDeelnameToe(String deelnemer, String[] aanwezigheden) {
if (index < poll.length && index < deelnemers.length) {
deelnemers[index] = deelnemer;
System.arraycopy(aanwezigheden, 0, poll[index], 0, aanwezigheden.length);
++index;
}
return type;
}
请注意,在这种情况下,您应该检查索引是否在数组范围内,并且 System.arraycopy
比用于复制数组的 for 循环更高效且可以说更简单。
关于Java : Save Assigned String from method in an array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41347305/