2011-10-07 61 views
-1

我當前的代碼:這段代碼可以縮短和/或更有效嗎?

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; 

    } 
} 
  • 基本上,我爲我的機器人,它挑選一個隨機的問題要問你一個簡單的應用程序,並挑選具體的答案,只有答案1是正確的,其他的AREN 「T。
    • 編輯QBegin方法後,它開始給我的問題,但錯誤的答案!請幫助我,也請。

P.S. 忽略奇怪的語言!

+0

這個問題會更適合[代碼評論](http://codereview.stackexchange.com/)。 –

+2

首先想到的是,你在每個if中調用'random.nextInt()'。所以每次都會生成一個新的隨機數字,並且您的ifs不是詳盡的 – Simiil

+0

「不正確」和「不正確」之間有區別嗎? –

回答

1

是的,代碼可以變得更短,更好。

class QuestionWithAnswers { 

    private final String question; 
    private final String[] answers; 
    private final String correctAnswer; 

    public QuestionWithAnswers(// 
     String question, // 
     String correctAnswer, // 
     String... wrongAnswers, // 
     Random rnd // 
) { 
    int n = wrongAnswers.length; 
    this.question = question; 
    this.answers = Arrays.copy(wrongAnswers, n + 1); 
    this.answers[n] = correctAnswer; 
    Collections.shuffle(Arrays.asList(this.answers), rnd); 
    } 

    public boolean isCorrect(String answer) { 
    return answer.equals(correctAnswer); 
    } 

    public String[] getAnswers() { 
    return answers.clone(); 
    } 

} 

基於這種數據結構,它應該是非常簡單,使代碼更短,因爲你並不需要自己洗牌的答案。