【问题标题】:Changing a string array depending on an if statement根据 if 语句更改字符串数组
【发布时间】:2017-03-30 04:44:58
【问题描述】:

我的编码知识是非常新的和基础的,但我正在编写一个爱好程序并且需要一些帮助。我一直在寻找我问题的答案,但有时我什至发现要问什么问题很困难!

我目前正在尝试做的是根据它是否是一个组来相应地在列表中命名一个随机选择的生物。这是我目前所拥有的:

    String[] grouptype = {"a","a group of"};
    String group = grouptype[ran.nextInt(grouptype.length)];

    if ("a".equals(group)) { 
        String[] creaturename = {"bee" , "elf" , "goblins"};
    }
    else {
      String[] creaturename = {"bees", "elves", "goblins"};
    }

到目前为止,该语句似乎根本不起作用-如果组等于“a”,我希望第二个数组组是我从中选择生物名称的地方。我为我糟糕的技能道歉,但我很感激帮助,即使它有助于格式化我的问题,因为我相信我将来会有更多的问题。

【问题讨论】:

  • 谢谢你,我以后会用它。在这种情况下,我似乎遇到的问题是我无法更改生物名称,因为它使用了两次。我的意图是根据 group="a" 是否重新定义 String[] 生物名。

标签: java arrays if-statement


【解决方案1】:

主要问题

createname 的范围仅限于创建它们的代码块,即在 ifelse

String[] grouptype=  {"a","a group of"};
String[] creaturename = null;
String group = grouptype[ran.nextInt(grouptype.length)];

if ("a".equals(group)) { 
    creaturename = new String [] {"bee" , "elf" , "goblins"};
}
else {
   creaturename = new String [] {"bees", "elves", "goblins"};
}

// return/print? createname

注意

修正错字。

【讨论】:

  • 所以换句话说,如果我在 if 语句中创建一个变量,它将不存在于其他任何地方,因此它不能像我尝试过的那样在以下 else 中使用?
  • 不可以,但是不能在声明它的块之外访问它。如果您要从块中返回该变量,它应该可以正常工作。
【解决方案2】:

我可能不会用您在实现中的结构/概念来解决这个问题。无论语言如何,如何组织代码始终是个问题。

在这种情况下,您的主要概念是生物。所以我可能会创建一个名为 Creature 的类,它有一个 name 属性,如“Goblin”或“Bee”或“Orc”。你可以在这个类上有一个公共方法,它也返回一个组的复数形式。

然后您可以创建一个 Creature 对象列表或数组,选择一个随机对象,然后根据需要访问该随机生物的单数或组名。

公共类生物 { 私有字符串名称; 私有字符串组名; 公共生物(字符串名称,字符串组名){ this.name = 名称; this.groupName = 组名; } 公共字符串 getGroupName() { 返回组名; } 公共字符串 getName() { 返回名称; } }

然后运行它:

导入 java.util.ArrayList; 导入 java.util.Random; 公共类 CreatureGenerator { 公共静态无效主要(字符串[]参数){ 生物地精 = new Creature("地精", "地精"); 生物精灵 = new Creature("Elf", "Elves"); ArrayList 生物 = new ArrayList(); 生物.add(妖精); 生物.add(elf); 生物随机生物 = 生物.get(新随机().nextInt(creatures.size())); System.out.println("A" + randomCreature.getName()); System.out.println("一组" + randomCreature.getGroupName()); } }

您可以在此示例中看到一些有趣的问题 - 例如“A elf”与“An elf”。也许生物类本身可以知道如何生成描述的完整单数形式和完整复数形式。甚至生物类也可能知道某个特定生物有多少——比如 1-10 或 1-6,就像你在 RGP 怪物类型描述中可能有的那样。

关于如何组织代码以使其清晰、易于理解和以后更改,总是有很多选择。

【讨论】:

  • 你是对的,我相信,我削减了很多程序,因为我发现最初的组织方式给我带来了问题。学习如何使用类对我有很大帮助。
【解决方案3】:

您应该在if-else 语句之外定义creatureName。请遵循 java 命名约定。

String[] creatureName;
if ("a".equals(group)) { 
    creatureName = new String[]{"bee", "elf", "goblins"};
}else{
    creatureName = new String[]{"bees", "elves", "goblins"};
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多