我在尝试将构造函数方法中分配的 String 和 String[] 保存到二维数组中然后将其打印出来时遇到问题。该程序背后的想法是将一个人及其名字和答案添加到涂鸦程序中(在 voegDeelnameToe 中),然后通过 geefPollInfo() 打印出所有信息。
我正在尝试通过 voegDeelnameToe() 方法添加几个人,但无法将 String deelnemer (= String '参与者姓名') 和 String[] aanwezigheden (= String[] 'answers') 保存到String[][] 轮询;因此我也无法打印出有关民意调查的信息。关于如何将 doodle.voegDeelnameToe 中的多个人的信息保存到 String [][] poll 中,有什么想法吗?
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());
public class Poll {
boolean type;
String titel;
String omschrijving;
String locatie;
String initiator;
final int MAX_DEELNEMERS = 10;
LocalDate[] data;
LocalTime[] tijdstippen;
String[][] poll; // The array to save the information
String einde = " ";
boolean afgesloten;
int teller = 0;
public Poll(String testBasispoll_1, String dit_is_de_eerste_basispoll, String gent, String bram_Gosseye, LocalDate[] data, LocalTime[] tijdstippen, boolean b) {
titel = testBasispoll_1;
omschrijving = dit_is_de_eerste_basispoll;
locatie = gent;
initiator = bram_Gosseye;
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]);
return einde;
}
public boolean voegDeelnameToe(String deelnemer, String[] aanwezigheden) {
return type;
}
/* public boolean wijzigDeelname(String deelnemer, String[] aanwezigheden){
return type;
}*/
}
最佳答案
Java 数组在实例化时具有固定大小。数组中的条目需要使用索引显式管理。您不能向数组追加新值,必须指定存储该值的索引。
一个String[][]
是字符串数组的数组。这是一个需要 String
数组的数组在每个索引中。每个条目都初始化为 null
.
使用 List<String[]>
可能是存储使用 voegDeelnameToe
传入的数组的更好选择方法。 List
接口(interface)有一个add
附加到列表末尾的方法。它也会根据需要动态增长。
如果您确实想使用数组,则需要管理要分配的下一个索引,并在需要更多空间时分配一个新的、更大的数组。
您还想存储 deelnemer
与 aanwezigheden
。做这件事有很多种方法。您可以维护两个单独的列表,其中之一是 deelnemer
和 aanwezigheden
之一并使用相同的索引将值保持在一起。可以创建一个新数组,1比aanwezigheden
大,将第一个条目设置为 deelnemer
并复制aanwezigheden
到剩余的条目中并存储它。最干净的方法是创建一个私有(private)内部类来保存两个参数并拥有这些参数的列表。
public class Poll {
private final List<PollEntry> poll;
public Poll(...) {
...
poll = new ArrayList<>();
}
...
private static final class PollEntry {
private final String deelnemer;
private final String[] aanwezigheden;
private PollEntry(String deelnemer, String[] aanwezigheden) {
this.deelnemer = deelnemer;
this.aanwezigheden = aanwezigheden;
}
}
}
您还应该记住,数组中的条目是可以更改的。所以你应该考虑复制 aanwezigheden
防止数组Poll
类在传递到 voegDeelnameToe
后已更改方法。仅当您担心线程安全或可变性时才需要执行此操作。
Arrays.copyOf(aanwezigheden, aanwezigheden.length)
你可以遍历List
在geefPollInfo
使用 foreach 循环。
for (PollEntry entry : poll) {
System.out.println("Deelnemer : " + entry.deelnemer);
}
关于java - 将方法中的 String 和 String[] 保存到 poll [ ][ ] 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41359753/