Java For循环只返回数组中的最后一个字符串

Java For循环只返回数组中的最后一个字符串,java,bukkit,Java,Bukkit,此代码应重命名您在config.yml中配置的工具包中的每个项目。 但是,遍历包含所有名称的数组时,只需将所有项重命名为数组中的最后一个字符串 try { String getKits = getConfig().getString("Kits." + args[0] + ".Items"); String[] kits = getKits.split(","); for (String s1 : kits) { String[] singleKi

此代码应重命名您在config.yml中配置的工具包中的每个项目。 但是,遍历包含所有名称的数组时,只需将所有项重命名为数组中的最后一个字符串

try {

    String getKits = getConfig().getString("Kits." + args[0] + ".Items");

    String[] kits = getKits.split(",");

    for (String s1 : kits) {

        String[] singleKits = s1.split("-");

        ItemStack kit = new ItemStack(Integer.valueOf(singleKits[0]), Integer.valueOf(singleKits[1]));
        ItemMeta kitDisplayName = kit.getItemMeta();

        String[] itemNames = getConfig().getString("Kits." + args[0] + ".names").split(",");

        for (int i = 0; i < itemNames.length; i++) {
            kitDisplayName.setDisplayName(itemNames[i]);
            kit.setItemMeta(kitDisplayName);
        }

        pInv.addItem(kit);

    }

} catch (Exception e) {
    e.printStackTrace();
}

内部for循环将遍历所有名称,并始终以最后一个名称结束。 因此,这段代码将为每个外部循环将displayname设置为相同的值

String[] itemNames = getConfig().getString("Kits." + args[0] + ".names").split(",");

        for (int i = 0; i < itemNames.length; i++) {
            kitDisplayName.setDisplayName(itemNames[i]);
            kit.setItemMeta(kitDisplayName);
        }
如果项目和名称的顺序相同,则应使用外部for循环中的编号获取正确的名称:

String[] kits = getConfig().getString("Kits." + args[0] + ".Items").split(",");
String[] itemNames = getConfig().getString("Kits." + args[0] + ".names").split(",");

for (int i = 0; i < kits.length; i++) {

    String[] singleKits = kits[i].split("-");

    ItemStack kit = new ItemStack(Integer.valueOf(singleKits[0]), Integer.valueOf(singleKits[1]));
    ItemMeta kitDisplayName = kit.getItemMeta();

    kitDisplayName.setDisplayName(itemNames[i]);
    kit.setItemMeta(kitDisplayName);
}

什么是数组参数?如果数组只是一个工具包名称,为什么它是数组?您希望从这段代码中得到什么?对于int i=0;i