Take the 2-minute tour ×
Code Review Stack Exchange is a question and answer site for peer programmer code reviews. It's 100% free, no registration required.

Basically, I made a simple app for my Android, where it picks a random question for you, and picks specific answers. Only 1 of the answers is correct, while other's aren't.

Also, after editing the QBegin method, it started to give me questions but with wrong answers.

TextView question; 
private int qType = -1;  
private int asked = 0;

private void QBegin() {
    // TODO Auto-generated method stub
    question = (TextView) findViewById(R.id.question);
    Random random = new Random();
    int qType = random.nextInt(5);
    switch(qType){
    case 0:
        question.setText("Question 1");
        break;
    case 1:
        question.setText("Q2");
        break;
    case 2:
        question.setText("Q3");
        break;
    case 3:
        question.setText("Q4");
        break;
    case 4:
        question.setText("Q5");
        break;
    }
    asked++;

    //intList.add(qType);
    getAnswers(qType);
    /*if(intList.contains(qType) && asked <= 5){
        QBegin();
    } else {
        answerCounter.setText("Congratulations!!! Your score : "+correct);
    }*/
}

private int answer;

private void getAnswers(int Type) {
    Random random = new Random();
    // TODO Auto-generated method stub
    switch(Type){
    case 1:
        if(random.nextInt(4) == 0){
            answer = 1;
            answer1.setText("относительно низкая температура шлаков");
            answer2.setText("сложность в управлении");
            answer3.setText("малая производительность");
            answer4.setText("нету выделения энергии непосредственно в загрузке");
        } else if (random.nextInt(4) == 1){
            answer = 2;
            answer1.setText("сложность в управлении");
            answer2.setText("относительно низкая температура шлаков");
            answer3.setText("малая производительность");
            answer4.setText("нету выделения энергии непосредственно в загрузке");
        } else if (random.nextInt(4) == 2){
            answer = 3;
            answer1.setText("сложность в управлении");
            answer2.setText("малая производительность");
            answer3.setText("относительно низкая температура шлаков");
            answer4.setText("нету выделения энергии непосредственно в загрузке");
        } else if (random.nextInt(4) == 3){
            answer = 4;
            answer1.setText("сложность в управлении");
            answer2.setText("малая производительность");
            answer3.setText("нету выделения энергии непосредственно в загрузке");
            answer4.setText("относительно низкая температура шлаков");

        }

        break;

    case 2:
        if(random.nextInt(4) == 0){
            answer = 1;
            answer1.setText("закрытые - плавка под слоем шихты");
            answer2.setText("открытые - плавка на воздухе");
            answer3.setText("вакуумные - плавка в вакууме");
            answer4.setText("компрессорные - плавка под избыточным давлением");
        } else if (random.nextInt(4) == 1){
            answer = 2;
            answer1.setText("открытые - плавка на воздухе");
            answer2.setText("закрытые - плавка под слоем шихты");
            answer3.setText("вакуумные - плавка в вакууме");
            answer4.setText("компрессорные - плавка под избыточным давлением");
        } else if (random.nextInt(4) == 2){
            answer = 3;
            answer1.setText("открытые - плавка на воздухе");
            answer2.setText("вакуумные - плавка в вакууме");
            answer3.setText("закрытые - плавка под слоем шихты");
            answer4.setText("компрессорные - плавка под избыточным давлением");
        } else if (random.nextInt(4) == 3){
            answer = 4;
            answer1.setText("открытые - плавка на воздухе");
            answer2.setText("вакуумные - плавка в вакууме");
            answer3.setText("компрессорные - плавка под избыточным давлением");
            answer4.setText("закрытые - плавка под слоем шихты");

        }

        break;

    case 3:
        if(random.nextInt(4) == 0){
            answer = 1;
            answer1.setText("в которой тепло выделяется в результате прохождения тока через проводники с активным сопротивлением");
            answer2.setText("в которой используеться активное сопротивление в качестве шихты");
            answer3.setText("в которой тепло не передаеться тепло излучением");
            answer4.setText("в которой которая делиться на компрессорную печь с активным сопротивлением");
        } else if (random.nextInt(4) == 1){
            answer = 2;
            answer1.setText("в которой используеться активное сопротивление в качестве шихты");
            answer2.setText("в которой тепло выделяется в результате прохождения тока через проводники с активным сопротивлением");
            answer3.setText("в которой используеться активное сопротивление в качестве шихты");
            answer4.setText("в которой которая делиться на компрессорную печь с активным сопротивлением");
        } else if (random.nextInt(4) == 2){
            answer = 3;
            answer1.setText("в которой используеться активное сопротивление в качестве шихты");
            answer2.setText("в которой используеться активное сопротивление в качестве шихты");
            answer3.setText("в которой тепло выделяется в результате прохождения тока через проводники с активным сопротивлением");
            answer4.setText("в которой которая делиться на компрессорную печь с активным сопротивлением");
        } else if (random.nextInt(4) == 3){
            answer = 4;
            answer1.setText("в которой используеться активное сопротивление в качестве шихты");
            answer2.setText("в которой используеться активное сопротивление в качестве шихты");
            answer3.setText("в которой которая делиться на компрессорную печь с активным сопротивлением");
            answer4.setText("в которой тепло выделяется в результате прохождения тока через проводники с активным сопротивлением");

        }

        break;

    case 4:
        if(random.nextInt(4) == 0){
            answer = 1;
            answer1.setText("Correct");
            answer2.setText("Incorrect");
            answer3.setText("Incorrect");
            answer4.setText("Incorrect");
        } else if (random.nextInt(4) == 1){
            answer = 2;
            answer1.setText("Inorrect");
            answer2.setText("Correct");
            answer3.setText("Incorrect");
            answer4.setText("Incorrect");
        } else if (random.nextInt(4) == 2){
            answer = 3;
            answer1.setText("Inorrect");
            answer2.setText("Incorrect");
            answer3.setText("Correct");
            answer4.setText("Incorrect");
        } else if (random.nextInt(4) == 3){
            answer = 4;
            answer1.setText("Inorrect");
            answer2.setText("Incorrect");
            answer3.setText("Incorrect");
            answer4.setText("Correct");

        }

        break;

    case 5:
        if(random.nextInt(4) == 0){
            answer = 1;
            answer1.setText("Correct");
            answer2.setText("Incorrect");
            answer3.setText("Incorrect");
            answer4.setText("Incorrect");
        } else if (random.nextInt(4) == 1){
            answer = 2;
            answer1.setText("Inorrect");
            answer2.setText("Correct");
            answer3.setText("Incorrect");
            answer4.setText("Incorrect");
        } else if (random.nextInt(4) == 2){
            answer = 3;
            answer1.setText("Inorrect");
            answer2.setText("Incorrect");
            answer3.setText("Correct");
            answer4.setText("Incorrect");
        } else if (random.nextInt(4) == 3){
            answer = 4;
            answer1.setText("Inorrect");
            answer2.setText("Incorrect");
            answer3.setText("Incorrect");
            answer4.setText("Correct");

        }

        break;

    }
}
share|improve this question

1 Answer 1

The (or at least "One") obvious approach would be to move most of your data into arrays, and just use the numbers to select values from those arrays. For example:

private void QBegin() {
    question = (TextView) findViewById(R.id.question);
    String[] types = { "Question 1", "Q2", "Q3", "Q4", "Q5"};
    Random random = new Random();
    int qType = random.nextInt(types.length);

    question.setText(types[qType]);
    asked++;
    getAnswers(qType);
}

Most of getAnswers should end up similar, although I'm afraid I'm lack the ambition to type it all in.

Personally, however, I think I'd move the text of the questions and answers out to a text file (or a database) and write the code as a more or less generic "engine" that read and present the questions and answers from the file.

share|improve this answer
1  
Good solution, but never use magic numbers, e.g. random.nextInt(types.length); is better. –  Landei Oct 9 '11 at 7:30
    
@Landei: Good point. Edited. –  Jerry Coffin Oct 9 '11 at 14:12

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.