2015-02-07 82 views
0

我试图让这段代码遍历嵌套的字符串/数组并输出基于给定输入值的值。Java - 对2D数组进行排序

 // wepName - {"Weapon Name Here", "Player Damage", "Block Damage", "Range"} 
    String[] weapon_44Magnum = {"44 Magnum", "150", "50", "45"}; 
    String[] weapon_airFilterLandMine = {"Air Filter Land Mine", "300", "200", "5"}; 
    String[] weapon_huntingRifle = {"Hunting Rifle", "125", "50", "100"}; 


    //Nested string arrays 
    public String[] string_allWeapons[] = {weapon_44Magnum,weapon_airFilterLandMine,weapon_huntingRifle}; 



public String GetPlayerDamage(String weaponName) { 

    // Declaring var 
    String ret = "-1"; 

     for (int j = 0; j < string_allWeapons[0].length; j++) { 

      ret = string_allWeapons[j][1] = ret; 
      System.out.println(string_allWeapons[j][1]); 
     } 
    return ret; 
} 

任何解决方案?

回答

1

您可以添加if以检查参数需要哪个阵列,然后再添加第二个loop

public class Stuff { 
    // wepName - {"Weapon Name Here", "Player Damage", "Block Damage", "Range"} 
    String[] weapon_44Magnum = {"44 Magnum", "150", "50", "45"}; 
    String[] weapon_airFilterLandMine = {"Air Filter Land Mine", "300", "200", "5"}; 
    String[] weapon_huntingRifle = {"Hunting Rifle", "125", "50", "100"}; 

    //Nested string arrays 
    String[][] string_allWeapons = {weapon_44Magnum,weapon_airFilterLandMine,weapon_huntingRifle}; 

    public static void main(String[] args) { 
     new Stuff().getPlayerDamage("44 Magnum"); 
    } 
    public String getPlayerDamage(String weaponName) { 
     String ret = "-1"; 
     for (int i = 0; i < string_allWeapons.length; i++) { 
      if(string_allWeapons[i][0].equals(weaponName)){ 
       ret=""; 
       for (int j = 1; j < string_allWeapons[i].length; j++) { 
        ret += " "+string_allWeapons[i][j]; 
       } 
       System.out.println(ret); 
       return ret; 
      } 
     } 
     return ret; 
    } 
} 
0

我的第一个解决方案是用这些变量创建一个名为“武器”的新类。它更容易跟踪。然后,你可以制作一个一维武器阵列,并使用获得者和​​设置者来获得每个武器的价值:)。 那么你可以通过数组循环,做这样的事情:

if(weapon.getName().equals(weaponName)){ 
    System.out.println(weapon.getPlayerDamage()); 
    return weapon.getPlayerDamage(); 
} 

我仍然习惯这个代码块的东西...反正做一个新的类是要走的路。希望这有助于。让我知道如果你需要任何澄清:)