我希望人们能够自我评估。为此,他们需要输入0到10之间的数字(0、1、2、3、4、5、6、7、8、9、10)。根据枚举的数量,我的枚举应该切换。

我的枚举叫做“知识”,我得到了四个不同的“知识”步骤。
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) );


与您的实现相比,它具有一些优点:


重复次数更少,因为我使用了范围>=而不是明确提及所有整数
它分离了接收用户输入并将其转换为知识级别的关注。
它将整数到级别的映射放置在易于重用的位置。

09-10 03:22
查看更多