簡體   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