嗨,我在大学一年级的计算机科学和学校,我们必须做一个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]]
提前感谢您的帮助:)
答案 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]);