Java : Save Assigned String from method in an array

标签 java arrays string methods constructor

我在尝试将构造函数方法中分配的 StringString[] 保存到数组中然后将其打印出来时遇到问题。 该程序背后的想法是将一个人及其名字和答案添加到涂鸦程序中(在 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 时,都会(覆盖)写入 antwoordenantwoorden 的所有元素。因此,只有最后一个人Matthias会留在投票中。建议:

  1. voegDeelnameToe 签名修改为 boolean voegDeelnameToe(int personIndex, String deelnemer, String[] aanwezigheden)。然后跳过第二个 for 循环,只执行 deelnemers[index] = deelnemer;。我不确定在这种情况下您应该如何处理 aanwezigheden

  2. Poll中创建一个字段int index = 0;,并在每次调用voegDeelnameToe时递增它,只要它小于6。例如:

    deelnemers[index] = deelnemer;
    ++index;`
    

我必须指出,Poll 类中有一个字段 String[][] poll = new String[6][15]; ,它似乎应该保存民意调查的结果。您可能应该为 6 个参与者中的每一个存储 aanwezigheden ?否则 antwoorden 每次都会被覆盖。例如,如果您在 Pollint 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/

相关文章:

java - Akka HTTP,编码 POJO

php - 如何删除数组中的元素?

string - Lua字符串操作模式匹配替代 “|”

java - 您如何获得实例的封闭实例? (com.sun.jdi)

Java用POI事件模型写Excel文件

java - android测试-EditText即使有字符也返回空

java - Java 中的纹理数组

Java 数组写/读操作

java - 读取字符串数组

java - 在 Java 中展开选项卡