2011-11-14 10 views
0

私はこれに問題があります... tip.setTextは、それが0より高いことを教えてくれます。 別のクラスのgetResultsメソッドも呼び出します。 (Int 'correct'は既に0より大きいです)My 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); 
    } 

EDIT:

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文でこれらの例をキャッチされていることを確認します。あなたは実際にそれらのケースに入ることはできません。あなたはこれらのケースに入っていない場合は質問の大きさは、フロートdivisonだろう、彼は0.somethingので、整数の除算が大きいので、もし

したがって、correctは、私はあなたが整数の除算をやっているかもしれないと思う0

+0

これらのケースを入力しています。私はそれを証明するために、tip.setText( "正しい答え" +正しい)を持っています。それは私に '正しい答え(0ではない)' – Alex

0

ままになります

+0

getResultsメソッドが使用される前に、私のtip.setTextが '4'であっても、まだ0.0を取得しています。 – Alex

0

をフロートすると、あなたの代わりに小数点数を取得します正しいキャスト0トライはここで実際に素早くあなたの問題への答えを把握する方法ですされています

電源を入れ

public int correct = 0; 
プロパティに

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

とセッターにブレークポイントを設定します。次に何かがそれを0に戻しているかどうかを確認します。インクリメントされた後に何もゼロに戻していない場合は、オブジェクトの新しいインスタンスをインスタンス化していて、既定値で新しいインスタンスを操作していないことに気付かない可能性があります。

私はそれが整数の除算の問題だと思うし、ここではその上のノートのいない:

あなたは* 5を掛けるが、その後(5つの答えがあるので)5で除算されています。答えの数がある時点で変化するが、5の乗数が同じままであれば理にかなっている。しかし、それ以外の場合は、5/5 = 1となってからなぜそれをやっているのか分かりませんし、何かを乗算するのは無意味です。

+0

平均点を得ているIm、ああ、はい!あなたが正しい! 2番目のクラス 'ETBetaActivity classy =新しいETBetaActivity();'それはImを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"); 

これは、1つのアクティビティから次のアクティビティに結果を正しく転送します。

関連する問題