如何从1D数组填充2D数组的列

时间:2015-12-12 10:58:26

标签: java

嗨,我在大学一年级的计算机科学和学校,我们必须做一个java项目(小游戏),勇士们互相争斗。关键是他们不幸地“强迫”我们使用特定的方法。

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

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

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

我试图在第2列放置我的方法retrieveBoolean但是你可以看到它给了我在[row1 column2,row2,column2和row3,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));

}

我知道这与我在我的方法retrieveSkills中连接myS有关,但我不知道如何解决这个问题。

输出:

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

我想拥有的是什么:

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

提前感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

只需使用以下代码:

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));
}

方法retrieveSkills()是不需要的,因为你只想从superSkills中保存一个布尔值,&#34; for(int i = 0; i&lt; myArray.length; i ++)&#34 ;不需要,因为你永远不会使用我并在这个&#34;的每一次交互中做一些操作(...&#34;。

答案 1 :(得分:1)

问题是你正在生成所有&#34;布尔字符串&#34;在一个字符串变量 myS 中,所以我们将改变一些代码,我将解释原因。 首先,在方法 superSkills()中,我们将通过进行这些小改动来使方法直接返回所请求的值:

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

通过执行此操作,我们只需要发送技能ID或列以将其作为字符串,请注意我们将其放在try-catch中以防万一,我们在使用数组作为一种良好实践时执行此操作。

然后我们将skillID发送到主

中的方法
myArray[j][1] = String.valueOf(superSkills[j]);