lundi 7 août 2017

Why doesn't my error "work" propperly?

I'd like that my enum will set depending on which number the user enter in a EditText (XML) [Only Numbers between 0 and 10 allowed)].
My problem is, that if I enter a char, a char sequenz, a number over 10 or a number under 0 my enum will be the same if I enter 0. I belive it will be an easy fix and/or a dumb mistake ^^"

    @SuppressLint("SetTextI18n")
public void Checking(View X) {
    TextView hKnowledge = (TextView) findViewById(R.id.headerKnowledge);
    TextView tKnowledge = (TextView) findViewById(R.id.textKnowledge);
    TextView eKnowledge = (TextView) findViewById(R.id.enterKnowledge);

    try{
        int inputNumber = Integer.parseInt(eKnowledge.getText().toString());
        _knowledge = KnowledgeLevel.fromUserInput(inputNumber);
    } catch(NumberFormatException e){
            hKnowledge.setText("Fehler gefunden!");
            hKnowledge.getResources().getColor(android.R.color.holo_red_dark);
            tKnowledge.setText("Gib eine Ganzzahl von 0 bis 10 ein!\n\nWeitere Informationen kannst du der Legende entnehmen!");
            tKnowledge.getResources().getColor(android.R.color.holo_red_light);
    }
    Test();
}

public void Test() {
    setContentView(R.layout.test);
    TextView test = (TextView) findViewById(R.id.textView);

    switch(_knowledge) {
        case NONE:
            test.setText("ENNUM = NOOB");
            break;
        case BEGINNER:
            test.setText("ENUM = BEGINNER");
            break;
        case ADVANCED:
            test.setText("ENUM = ADV");
            break;
        case PRO:
            test.setText("ENUM = PRO");
            break;
        case GRANDMASTER:
            test.setText("ENUM = GM");
            break;
    }
}

private enum KnowledgeLevel {
    NONE, BEGINNER, ADVANCED, PRO, GRANDMASTER;

    static KnowledgeLevel fromUserInput(final int input)
    {
        if (input >= 10) {
            return GRANDMASTER;
        }
        else if (input >= 7) {
            return PRO;
        }
        else if (input >= 4) {
            return ADVANCED;
        }
        else if (input >= 0) {
            return BEGINNER;
        }
        return NONE;
    }
}

Aucun commentaire:

Enregistrer un commentaire