【问题标题】:Java - Sorting a 2D ArrayJava - 对二维数组进行排序
【发布时间】:2015-02-07 01:51:48
【问题描述】:

我试图让这段代码循环遍历嵌套的字符串/数组并根据给定的输入值输出值。

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

有什么解决办法吗?

【问题讨论】:

    标签: java arrays string loops nested


    【解决方案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;
        }
    }
    

    【讨论】:

      【解决方案2】:

      我的第一个解决方案是使用这些变量创建一个名为“Weapon”的新类。它只是更容易跟踪。然后你可以制作一维武器数组,并使用 getter 和 setter 来获取每个武器的价值 :)。 然后你可以遍历数组并做这样的事情:

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

      我仍然习惯于这个代码块的事情......无论如何创建一个新类是要走的路。希望这会有所帮助。如果您需要任何澄清,请告诉我:)

      【讨论】:

        猜你喜欢
        • 2021-07-14
        • 2013-05-26
        • 2013-08-17
        • 2015-09-17
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        相关资源
        最近更新 更多