【问题标题】:Transferring a 2D array from one class to another将二维数组从一个类转移到另一个类
【发布时间】:2015-11-29 03:49:59
【问题描述】:

我正在尝试获取用户在文本字段中添加的所有信息,然后将它们添加到二维数组中。我已经做到了这一点:

int minorinput = JOptionPane.showConfirmDialog(frame, panel1, "Choose Minor Stats", JOptionPane.OK_CANCEL_OPTION);

        if(minorinput == JOptionPane.OK_OPTION)
        {
            int [][] pureMR = new int [4][4];

            pureMR[0][0] = Integer.parseInt(Melee.getText());
            pureMR[1][0] = Integer.parseInt(Ranged.getText());
            pureMR[2][0] = Integer.parseInt(RC.getText());
            pureMR[3][0] = Integer.parseInt(Negotiation.getText());

            pureMR[0][1] = Integer.parseInt(Dodge.getText());
            pureMR[1][1]= Integer.parseInt(Perception.getText());
            pureMR[2][1] = Integer.parseInt(Will.getText());
            pureMR[3][1] = Integer.parseInt(Procure.getText());

            pureMR[0][2] = Integer.parseInt(rideBox.getText());
            pureMR[1][2] = Integer.parseInt(rideBox2.getText());
            pureMR[2][2] = Integer.parseInt(artBox.getText());
            pureMR[3][2] = Integer.parseInt(art2.getText());

            pureMR[0][3] = Integer.parseInt(knowledgeBox.getText());
            pureMR[1][3] = Integer.parseInt(knowledge2Box.getText());
            pureMR[2][3] = Integer.parseInt(infoBox.getText());
            pureMR[3][3] = Integer.parseInt(info2Box.getText());

但我不知道如何将数组转移到不同的类中,它将在对象构造函数中使用,该构造函数将允许我通过对象的 toString 方法进行打印。

我应该如何将二维数组从一个类转移到另一个类?

Class I want to add the Array to:

                    if(pureinput == JOptionPane.OK_OPTION)
                    {

                        String name = nameBox.getText();
                        String age = ageBox.getText();
                        String gender = genderBox.getText();
                        String bloodType = bloodBox.getText();
                        String height = heightBox.getText();
                        String weight = weightBox.getText();
                        String zodiac= zodiacBox.getText();
                        String work = workBox.getText();
                        String cover = coverBox.getText();
                        String breed = "Pure";
                        String sydrome = syndrome1Box.getText();

                        int[] pureBS = new int[4];
                        pureBS[0] = Integer.parseInt(bodyBox.getText());
                        pureBS[1] = Integer.parseInt(senseBox.getText());
                        pureBS[2] = Integer.parseInt(mindBox.getText());
                        pureBS[3] = Integer.parseInt(skillBox.getText());

                        int[] pureSS = new int[6];
                        pureSS[0] = Integer.parseInt(mHPBox.getText());
                        pureSS[1] = Integer.parseInt(stockBox.getText());
                        pureSS[2] = Integer.parseInt(savingsBox.getText());
                        pureSS[3] = Integer.parseInt(initBox.getText());
                        pureSS[4] = Integer.parseInt(moveBox.getText());
                        pureSS[5] = Integer.parseInt(dashBox.getText());

                        String origin = orginBox.getText();
                        String exp = ExperienceBox.getText();
                        String encounter = EncounterBox.getText();
                        String awake = AwakeningBox.getText();
                        int eRate = Integer.parseInt(EncroachmentRateBox.getText());
                        String impulse = ImpulseBox.getText();
                        int eRate2= Integer.parseInt(EncroachmentRateBox2.getText());


                        Character pure = new Character(name,age,bloodType,gender, height,weight,zodiac,work,cover,
                                                        breed,sydrome,pureBS, pureSS,origin,exp,encounter,awake,eRate,
                                                        impulse,eRate2, //Needs a 2D array here);

                        System.out.println(pure.pureToString());

It creates this dialog box.

【问题讨论】:

    标签: java class multidimensional-array transfer


    【解决方案1】:

    最简单的方法:只需调用一个setter方法,并将数组传递给实例:

        if(minorinput == JOptionPane.OK_OPTION) {
            int [][] pureMR = new int [4][4];
    
            // code to fill array
    
            // assuming your OtherClass has this type of setter method...
            // because if it doesn't, it NEEDS one.
            otherInstance.setPureMr(pureMR);
    

    您在哪里获得对 otherInstance 实例的引用将完全取决于您的程序的结构,以及我们目前不知道的信息。

    话虽如此,我确实想知道您的 2D 数组是否是一个杂物,如果您最好创建一个类来保存此信息,然后将此类的一个对象传递给您的另一个实例。

    【讨论】:

    • 其他实例是什么意思?我是否需要在第一个类中创建一个对象,即我希望将数组传输到的类,即 otherInstance?
    • @Kas.C:您已声明您要传输此信息"to another class",而“otherInstance”是其他类。你如何创建它,你如何引用它都取决于你没有告诉我们、我们不知道的信息。我的猜测是你不想创建一个新实例,你想引用一个现有的实例,但是如果你想要一个更好的答案,你会想要改进你的问题,并告诉我们更多相关的缺少细节。
    • @Kas.C:了解我们只知道您向我们展示和告诉我们的内容,不多也不少。
    • 抱歉,我很难控制在字符数限制内。我要添加数组的类是 1307 行。我添加了更多信息。感谢您的耐心等待。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2022-12-07
    • 1970-01-01
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    相关资源
    最近更新 更多