繁体   English   中英

如何从一维数组填充二维数组的列

[英]How to fill in columns of 2D arrays from 1D array

嗨,我是大学计算机科学专业的大一学生,在学校里,我们必须与一个相互竞争的战士做一个Java项目(小游戏)。 关键是他们不幸地使用特定方法“强迫”了我们。

因此,对于每个战士的“超能力技能”,我们​​都有一个布尔表。 我们必须使用布尔数组,以便以后可以检查某个战士是否具有特定的超级技能

我想写一个String方法来检索每个布尔元素的String值,然后将该方法放在2D数组的第2列中。

我的问题是:我想在我的2D数组的第2列上将我的superSkills数组中的每个布尔值放在右行。

我试图将第2列的方法restoreBoolean放在第2列,但是您可以看到它给了我不需要的[row1 column2,row2,column2 and row 3,column2]的所有布尔数组,我想要每个元素e1,e2我的布尔数组匹配在row1column1,row2column2 ...

public class SuperSkills {

private static boolean[] superSkills = { true, false, true };

public static String retrieveSkills() {
    String myS = "";

    for (int i = 0; i < superSkills.length; i++) {
        myS += String.valueOf(superSkills[i]);
    }

    return myS;
}

public static void main(String[] args) {
    String[][] myArray = { { "X0", "", "Z1" }, 
            { "X1", "", "Z1" }, 
            { "X2", "", "Z2" } };

    for (int i = 0; i < myArray.length; i++) {
        for (int j = 0; j < myArray.length; j++) {
            myArray[j][1] = retrieveSkills();
        }
    }

    System.out.println(Arrays.deepToString(myArray));

}

我知道这与我的方法中的myS串联有关,但是我不知道如何解决该问题。

输出:

[[X0, truefalsetrue, Z1], [X1, truefalsetrue, Z1], [X2, truefalsetrue, Z2]]

我想要的是:

[[X0, true, Z1], [X1, false, Z1], [X2, true, Z2]]

先谢谢您的帮助 :)

只需使用以下代码:

public static void main(String[] args) {
    String[][] myArray = { { "X0", "", "Z1" }, 
            { "X1", "", "Z1" }, 
            { "X2", "", "Z2" } };

    for (int j = 0; j < myArray.length; j++) {
            myArray[j][1] = String.valueOf(superSkills[j]);
    }

    System.out.println(Arrays.deepToString(myArray));
}

不需要方法restoreSkills(),因为您只想从superSkills中保存一个布尔值,所以不需要“ for(int i = 0; i <myArray.length; i ++)”,因为您从不使用i和在此“ for(...)”的每个交互中进行一些操作。

问题是您要在单个String变量myS中生成所有“布尔字符串”,因此我们将更改一些代码,我将解释原因。 首先,在方法superSkills()处 ,我们将通过进行以下一些更改来使该方法直接返回要求的值:

 public static String retrieveSkills(int skillID) {
  try {
    return String.valueOf(superSkills[skillID]);
  } catch (Exception e) {
     return "NA";
  }
}

通过执行此操作,我们只需要发送skillID或列即可将其作为字符串获取,请注意,为了防万一,我们将其放置在try-catch中,以防万一,我们在使用数组时是一个很好的习惯。

然后我们只是将skillID发送到主方法中

myArray[j][1] = String.valueOf(superSkills[j]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM