java - 如何使用 if 语句或 for 循环设置枚举?

标签 java android-studio for-loop if-statement enums

我希望人们可以 self 评估。为此,他们需要输入一个介于 0 和 10 之间的数字 (0、1、2、3、4、5、6、7、8、9、10)。根据他们的数量,我的枚举应该切换。

我的枚举称为“knowlede”,我得到了四个不同的“knowledge”步骤。
0-3 = 初级//4-6 = 高级//7-9 = 专业//10 = 大师

我的想法是使用 if 语句和/或 for 循环设置用户枚举级别。
到目前为止,这是我的代码,但如您所见,我可以缩短这段代码,但我不知道该怎么做;我阅读了其他一些主题,但由于某种原因它们不起作用或者我没有得到它们。

@SuppressLint("SetTextI18n")
public Wissenstand Bestätigung(View v) {
    TextView uWissen = (TextView) findViewById(R.id.textView_Wissen_Titel);
    TextView pWarung = (TextView) findViewById(R.id.textView_Wissen);
    TextView eWissen = (TextView) findViewById(R.id.editText_eingabeWissentsstand);
            if ("0".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Beginner;
            } else if ("1".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Beginner;
            } else if ("2".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Beginner;
            } else if ("3".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Beginner;
            } else if ("4".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Fortgeschrittener;
            } else if ("5".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Fortgeschrittener;
            } else if ("6".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Fortgeschrittener;
            } else if ("7".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Pro;
            } else if ("8".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Pro;
            } else if ("9".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.Pro;
            } else if ("10".equals(eWissen.getText().toString())) {
                knowledge = Wissenstand.GrandMaster;
            } else {
                uWissen.setText("Fehler gefunden!");
                uWissen.getResources().getColor(android.R.color.holo_red_dark);
                pWarung.setText("Gib eine Zahl von 0 bis 10 ein!\n0,5-er Schritte sind nicht erlaubt!\nWeitere Informationen kannst du der Legende entnehmen!");
                pWarung.getResources().getColor(android.R.color.holo_red_light);
            }
    return null;
}

如果您因为不明白某些单词而需要帮助,请发短信给我,我会尽快回复。
语言是“德语”。

最佳答案

我会像这样实现它:

enum KnowledgeLevel
{
    BEGINNER, ADVANCED, PROFESSIONAL, MASTER;

    static KnowledgeLevel fromUserInput(final int input)
    {
        if (input >= 10) {
            return MASTER;
        }
        else if (input >= 7) {
            return PROFESSIONAL;
        }
        else if (input >= 4) {
            return ADVANCED;
        }
        else {
            return BEGINNER;
        }
    }
}

示例用法为:

final String input = "5";
KnowledgeLevel level = KnowledgeLevel.fromUserInput( Integer.parseInt(input) );

与您的实现相比,这有一些优势:

  1. 重复较少,因为我使用范围 >= 而不是明确提及所有整数
  2. 它将接收用户输入和将其转换为知识级别的关注点分开。
  3. 它将整数到级别的映射放在易于重用的地方。

关于java - 如何使用 if 语句或 for 循环设置枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45482249/

相关文章:

java - 如何在没有前缀的情况下从嵌入式 groovy 调用 Java 方法并访问属性

android - 关于启动Android虚拟设备时GPU模式错误

c# - 我们可以将运行在PC上的ActiveMQ Server连接到运行在android上的ActiveMQ Client吗?

java - 由于 VT-x 禁用,无法在 Android Studio 中运行代码

Python while 和 for 循环 - 我可以使代码更高效吗?

javascript - 每 5 个循环计数一次

python - 修改python中的条件

java - Weld -001409 : Ambiguous dependencies for type T with qualifiers @Default

java - Playframework [Java] : provision error (com. google.inject.ProvisionException)

java - 如何在 Vaadin 中迭代 ComboBox?