2011-11-14 43 views
0

我有這個問題... 請注意,tip.setText告訴我它高於0. 我還會在另一個類中調用getResults方法。 (Int'正確'已經高於0)我的Int()總是返回0?

我想知道爲什麼getResults中的正確值總是爲0,我該如何解決這個問題?

 public int correct = 0; 

    private String[] questions = 
    {"Question 1", 
    "Question 2", 
    "Question 3", 
    "Question 4", 
    "Question 5" 
    }; 

public void onClick(View view) { 
     if (alive == false) { 
     // startActivity(new Intent("com.aleksei.etb.END")); 
      return; 
     } 
     try { 
     button_click = MediaPlayer.create(this, R.raw.button_click); 
     button_click.start(); 
     switch(view.getId()){ 
     case R.id.button5: //main 
      break; 
     case R.id.button1: //answer_1 
      if(correct(1)) 
       correct++; 


      break; 
     case R.id.button2: //answer_2 
      if(correct(2)) 
       correct++; 

      break; 
     case R.id.button3: //answer_3 
      if(correct(3)) 
       correct++; 

      break; 
     case R.id.button4: //answer_3 
      if(correct(4)) 
       correct++; 


      break; 

     default: 
      break; 


     } 
     Game(i1); 
     tip.setText("Correct answers "+correct); //this thing tells me that it's not 0. (Well, in the beggining it's 0, but after counter goes up! (correct++) 
     } catch (Exception ex){} 
    } 

    public int getResults(){ 
     return (int)(correct*5)/(questions.length+1); 
    } 

編輯:

public class ETBetaActivity extends Activity implements View.OnClickListener { 

    Button answer_1, 
    answer_2,answer_3, 
    answer_4,main; 

    TextView q_textview, 
    tip; 

    private String a1,a2,a3,a4 = ""; 

    private int i1 = 0; 
    public float correct = 0; 

    private boolean alive = true; 

    MediaPlayer button_click; 

    private String[] questions = 
    {"Question 1", 
    "Question 2", 
    "Question 3", 
    "Question 4", 
    "Question 5" 
    }; 
    private String[] answers_correct = 
    {"Correct answer 1", 
    "Correct answer 2", 
    "Correct answer 3", 
    "Correct answer 4", 
    "Correct answer 5" 
    }; 

    private String[][] answers_wrong = 
    { {"Incorrect answer 1-1", "Incorrect answer 1-2" , "Incorrect answer 1-3"}, 
     {"Incorrect answer 2-1", "Incorrect answer 2-2" , "Incorrect answer 2-3"}, 
     {"Incorrect answer 3-1", "Incorrect answer 3-2" , "Incorrect answer 3-3"}, 
     {"Incorrect answer 4-1", "Incorrect answer 4-2" , "Incorrect answer 4-3"}, 
     {"Incorrect answer 5-1", "Incorrect answer 5-2" , "Incorrect answer 5-3"}, 


    }; 


    List<String> question_list = new ArrayList<String>(); 
    List<String> answer_list_correct = new ArrayList<String>(); 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     getData(); 
    } 


    @Override 
    public void onClick(View view) { 
     if (alive == false) { 
     // startActivity(new Intent("com.aleksei.etb.END")); 
      return; 
     } 
     try { 
     button_click = MediaPlayer.create(this, R.raw.button_click); 
     button_click.start(); 
     switch(view.getId()){ 
     case R.id.button5: //main 
      break; 
     case R.id.button1: //answer_1 
      if(correct(1)) 
       correct++; 


      break; 
     case R.id.button2: //answer_2 
      if(correct(2)) 
       correct++; 

      break; 
     case R.id.button3: //answer_3 
      if(correct(3)) 
       correct++; 

      break; 
     case R.id.button4: //answer_3 
      if(correct(4)) 
       correct++; 


      break; 

     default: 
      break; 


     } 
     Game(i1); 
     correct++; 
     tip.setText("Correct answers "+correct); 
     } catch (Exception ex){} 
    } 


    public float getResults(){ 
     return (Float)(correct*5)/(questions.length); 
    } 

    private boolean correct(int button){ 
     for (int i = 0; i < answers_correct.length; i++){ 
     if(button == 1 && a1 == answers_correct[i] 
      || button == 2 && a2 == answers_correct[i] 
      || button == 3 && a3 == answers_correct[i] 
      || button == 4 && a4 == answers_correct[i]) 
      return true; 
     } 
     return false; 
    } 

    private void Game(int q){ 
     try { 
     if(i1 >= questions.length) { //no more questions 
      startActivity(new Intent("com.aleksei.etb.END")); 
      alive = false; 
      return; 
     } 

     main.setText("Next"); 
     String answer_list[][] = { 
       {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, 
       {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, 
       {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, 
       {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]}, 
       {answers_correct[i1], answers_wrong[q][0] , answers_wrong[q][1] , answers_wrong[q][2]} 
     }; 

     Collections.shuffle(Arrays.asList(answer_list[q])); 
     answer_1.setText(answer_list[q][0]); 
     answer_2.setText(answer_list[q][1]); 
     answer_3.setText(answer_list[q][2]); 
     answer_4.setText(answer_list[q][3]); 
     a1 = answer_list[q][0]; 
     a2 = answer_list[q][1]; 
     a3 = answer_list[q][2]; 
     a4 = answer_list[q][3]; 
     q_textview.setText(questions[q]); 
     /*questions = question_list.toArray(new String[question_list.size()]); 
     answers_correct = answer_list_correct.toArray(new String[answer_list_correct.size()]); 
     question.setText(questions[i1]);   

     answer_list_correct.remove(questions[i1]); 
     question_list.remove(questions[i1]);*/ 

     } catch(Exception e){ 
      System.out.println(e); 
     } 
     i1++; 
    } 
    private void getData(){ 
     //Getting the data 
     main = (Button) findViewById(R.id.button5); 
     answer_1 = (Button) findViewById(R.id.button1); 
     answer_2 = (Button) findViewById(R.id.button2); 
     answer_3 = (Button) findViewById(R.id.button3); 
     answer_4 = (Button) findViewById(R.id.button4); 
     q_textview = (TextView) findViewById(R.id.question); 
     tip = (TextView) findViewById(R.id.answ1); 

     main.setOnClickListener(this); 
     answer_1.setOnClickListener(this); 
     answer_2.setOnClickListener(this); 
     answer_3.setOnClickListener(this); 
     answer_4.setOnClickListener(this); 

     //Resets the text 
     //Note to self: Replace with another ContectView 
     main.setText("Begin!"); 
     answer_4.setText(""); 
     answer_3.setText(""); 
     answer_2.setText(""); 
     answer_1.setText(""); 
     tip.setText(""); 

    /* for(String x : questions) { 
      for(String y : answers_correct){ 

      answer_list_correct.add(y); 
      question_list.add(x); 

      Collections.shuffle(answer_list_correct); 
      Collections.shuffle(question_list); 

      } 
     } */ 



    } 


    } 

另一類

 public class End extends Activity implements RatingBar.OnRatingBarChangeListener { 
    ETBetaActivity classy = new ETBetaActivity(); 

    TextView score; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.end); 
     score = (TextView) findViewById(R.id.score); 
     results(); 
     final RatingBar yourRating = (RatingBar) findViewById(R.id.ratingBar1); 
     yourRating.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener(){ 

      @Override 
      public void onRatingChanged(RatingBar ratingBar, float rating, 
       boolean fromUser) { 
      // TODO Auto-generated method stub 
       // yourRating.setRating(rating); 
       yourRating.setRating(classy.getResults()); 
       /* Toast.makeText(End.this, "M:"+String.valueOf(rating), 
       Toast.LENGTH_LONG).show(); */ 
       Toast.makeText(End.this, "M "+classy.getResults(), Toast.LENGTH_LONG).show(); 
      }}); 
    //movieImage.setImageResource(R.drawable.icon);  
} 


    @Override 
    public void onRatingChanged(RatingBar ratingBar, float rating, 
      boolean fromUser) { 
     // TODO Auto-generated method stub 

    } 

    public void results(){ 
     score.setText("Your mark "+classy.getResults()); 
    } 

    } 
+0

在'getResults()'中是正確的0還是'anInt' 0? –

+0

'正確'總是0,那麼..所以是anInt。 – Alex

+0

編輯它...... – Alex

回答

0

我會確保你實際上是在追趕你的switch語句的情況下。你實際上可能不會進入這些情況。

因此,如果你不進入這些案件correct仍將0

+0

我正在輸入這些情況。我有tip.setText(「正確答案」+正確),以證明它。它告訴我'正確的答案(不是0)' – Alex

0

我想你可能會做整數除法,所以如果提問的大小大的浮動divison將他0.something一個這樣的整數除法0嘗試鑄造正確的浮動,你會得到一個十進制數,而不是

+0

仍然得到0.0,即使我的tip.setText在使用getResults方法之前說'4'。 – Alex

0

這裏是如何找出答案,你的問題真快:

打開

public int correct = 0; 

到屬性

private int _correct = 0; 
    public int correct 
    { 
     get { return _correct; } 
     set { _correct = value; } 
    } 

,並設置在二傳手一個破發點。然後你會看到是否有東西將其設置回零。如果沒有任何東西在增加後將其設置爲零,那麼可能是某處您正在實例化對象的新實例,並且您沒有意識到您沒有使用默認值的新實例。

我不認爲這是一個整數除法問題,這裏的上一張紙條:

你乘以* 5,但隨後被5分(因爲有5個答案)。如果答案的數量在某個時候會發生變化,但是5的乘數將保持不變,那麼這是有道理的。但除此之外,我不知道爲什麼自5/5 = 1以來這樣做,並且將一些東西乘以一點就沒有意義。

+0

我得到了一個平均分,啊,是的!你是對的!第二類'ETBetaActivity classy =新ETBetaActivity();'這意味着我重置它回到0!該死,我有多愚蠢,還有什麼想法,我怎麼能將它傳遞給另一個班級而不重新設置呢? – Alex

+0

我不知道你的意思是...但我很高興我能幫上忙。我認爲這可能是你的問題:) –

+0

Urrrm - 你的代碼示例是C#不是Java – Squonk

1

當開始結束活動,你應該做的:

 
Intent end = new Intent("com.aleksei.etb.END"); 
end.putExtra("results", getResults()); 
startActivity(end); 

,然後從最終活動在OnCreate刪除優雅場,而是看結果()方法,如:

 
int results = getIntExtra("results"); 

這將正確地將結果從一項活動轉移到下一項活動。