java - 将方法中的 String 和 String[] 保存到 poll [ ][ ] 中

标签 java arrays string class methods

我在尝试将构造函数方法中分配的 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附加到列表末尾的方法。它也会根据需要动态增长。

如果您确实想使用数组,则需要管理要分配的下一个索引,并在需要更多空间时分配一个新的、更大的数组。

您还想存储 deelnemeraanwezigheden 。做这件事有很多种方法。您可以维护两个单独的列表,其中之一是 deelnemeraanwezigheden 之一并使用相同的索引将值保持在一起。可以创建一个新数组,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)

你可以遍历ListgeefPollInfo使用 foreach 循环。

for (PollEntry entry : poll) {
    System.out.println("Deelnemer : " + entry.deelnemer);
}

关于java - 将方法中的 String 和 String[] 保存到 poll [ ][ ] 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41359753/

相关文章:

java - 如何使 Java GUI 全屏显示并类似于 Playstation 3

java - 如何使用 Youtube Data API v3 获取 Youtube channel 订阅者数量

java - setContentView(int) 不起作用

c++ - 如何创建一个返回数组的函数

javascript - ES6 到 ES5 需要帮助修复

java - 检查每个字符串是否存在于另一个字符串中但是顺序

string - 如何在 Golang 中解决(字符串和字节类型不匹配)

java - 如何从应用程序检索数据库备份?

ruby - 在 ruby​​ 中按值删除一个数组元素

java - 数字数据形式中与 += 等价的字符串是什么?