java - 替代数千个 if-then-else 语句

标签 java android if-statement switch-statement

我正在为 Android 编写基于文本的 RPG 游戏,以便熟悉 Java 和 XML。我想在按钮的 ListView 中显示一系列选项,并且根据用户按下的按钮,我想用一组新的选项相应地更新 Activity 。

例如,假设游戏从以下选择开始:

{option1, option2, option3, option4}

如果用户点击我要显示的选项2:

{2-option1, 2-option2, 2-option3, 2-option4}

或者假设用户点击了 4 而不是 2。然后:

{4-option1, 4-option2, 4-option3, 4-option4}

因此,我正在尝试确定一种速度高效/内存高效的方法来确定要显示的下一个 String[]

最初我在考虑构建一个 GIANT if-then-else 树(或 switch 语句 - 无关紧要),其中每个可能的选项都有一个 if 语句。 例如:

//choice是用户选择的选项

if(choice==option1){
   return {"1-option1", "1-option2", "1-option3"}
}else if(choice== 1-option1 ){
   return {"1-1-option1","1-1-option2","1-1-option3"}

列表会一直继续下去,直到每个可能的选择都返回一个与要显示的下一组选项相对应的 String[]。

然后,我开始考虑用对象来做这件事可能会更干净、更容易:

   MyObject newObject = MyObject(choice)
   newObject.getOptions()

其中 choice 是一个构造函数参数,它将 String[] 初始化为正确的下一组选项; getOptions() 返回此 String[]

但是,这将是很多对象,我不确定它是否会通过 if/switch 语句方法简化事情。

那么,对于处理此类问题的有效方法有什么想法吗?

最佳答案

使用 Map (可能是 HashMap)在你的对象内部将 "option2"{"2-option1", "2-option2", "2-option3", "2-option4"} 相关联

数据结构的选择在编程中非常重要。

关于java - 替代数千个 if-then-else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30985537/

相关文章:

android - Phonegap记录声音。听到声音后保存到文件

android - 将 Nextbook next7p12 平板电脑与 PC 连接

python - 对 `python` 中的同一变量使用多个条件

python - if 函数使用 future 数组

java - Liquibase SQL Server 脚本在 H2 数据库测试中失败

java - 如何禁用 JBPM 持久性?

java - 是否有一个可嵌入的事务性 java 键值存储,允许您覆盖对象而无需先删除它

java - 如何在 opencv java api 中将 MatOfPoint 转换为 MatOfPoint2f

android - if 和 else 命令在 android 首选项中

java - 如何在输出可接受时摆脱 java.lang.NullPointerException?