2016-09-21 7 views
0

私は対話型クイズを作成しようとしていますが、EditTextビューは編集可能のJavaコードです。ユーザーがこのフィールド(最小10文字)で答えを入力する限り、彼はそれを正しく得るつもりです。しかし、私のコードでは、ブールと設定してcalculateScoreメソッドに設定する必要があることを教えています。編集可能をブール型にする方法

誰もが最低限の文字制限が満たされた場合にも確認しながら、私のcalculateScore方法でブールとして編集可能なを作る方法を知っていますか?

package com.example.android.quantummechanicsquiz; 

    import android.provider.MediaStore; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 
    import android.text.Editable; 
    import android.view.View; 
    import android.widget.CheckBox; 
    import android.widget.EditText; 
    import android.widget.RadioButton; 
    import android.widget.TextView; 
    import android.widget.Toast; 

    public class MainActivity extends AppCompatActivity { 

     int score = 0; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
     } 


     public void radioButtonClicked(View view) { 
      boolean checked = ((RadioButton) view).isChecked(); 

      switch (view.getId()) { 
       case R.id.radio_one_correct: 
        if (checked) break; 

       case R.id.radio_one_b: 
        if (checked) break; 

       case R.id.radio_one_c: 
        if (checked) break; 

       case R.id.radio_one_d: 
        if (checked) break; 

       case R.id.radio_two_a: 
        if (checked) break; 

       case R.id.radio_two_b: 
        if (checked) break; 

       case R.id.radio_two_correct: 
        if (checked) break; 

       case R.id.radio_two_d: 
        if (checked) break; 

       case R.id.radio_four_a: 
        if (checked) break; 

       case R.id.radio_four_b: 
        if (checked) break; 

       case R.id.radio_four_correct: 
        if (checked) break; 

       case R.id.radio_four_d: 
        if (checked) break; 

       case R.id.radio_five_a: 
        if (checked) break; 

       case R.id.radio_five_b: 
        if (checked) break; 

       case R.id.radio_five_c: 
        if (checked) break; 

       case R.id.radio_five_correct: 
        if (checked) break; 


      } 

     } 


     private int calculateScore(boolean answerOne, boolean answerTwo, boolean answerThreeA, 
            boolean answerThreeB, boolean answerThreeC, boolean answerThreeD, 
            boolean answerFour, boolean answerFive, Editable answerSix) { 
      score = 100; 

      if (answerOne) { 


      } else { 

       score = score - 100/6; 
      } 

      if (answerTwo) { 


      } else { 

       score = score - 100/6; 
      } 

      if (answerThreeA) { 

       score = score - 8; 

      } else { 


      } 

      if (answerThreeB) { 


      } else { 

       score = score + 4; 
      } 

      if (answerThreeC) { 


      } else { 

       score = score + 4; 
      } 

      if (answerThreeD) { 

       score = score - 8; 

      } else { 


      } 

      if (answerFour) { 


      } else { 

       score = score - 100/6; 
      } 

      if (answerFive) { 


      } else { 

       score = score - 100/6; 
      } 


      if (answerSix) { 


      } else { 

       score = score - 100/6; 
      } 

      return score; 

     } 


     public void submitScore(View view) { 
      RadioButton answerOne = (RadioButton) findViewById(R.id.radio_one_correct); 
      boolean correctAnswerOne = answerOne.isChecked(); 

      RadioButton answerTwo = (RadioButton) findViewById(R.id.radio_two_correct); 
      boolean correctAnswerTwo = answerTwo.isChecked(); 

      CheckBox answerThreeA = (CheckBox) findViewById(R.id.checkbox_three_a); 
      boolean incorrectAnswerThreeA = answerThreeA.isChecked(); 

      CheckBox answerThreeB = (CheckBox) findViewById(R.id.checkbox_three_b_correct); 
      boolean correctAnswerThreeB = answerThreeB.isChecked(); 

      CheckBox answerThreeC = (CheckBox) findViewById(R.id.checkbox_three_c_correct); 
      boolean correctAnswerThreeC = answerThreeC.isChecked(); 

      CheckBox answerThreeD = (CheckBox) findViewById(R.id.checkbox_three_d); 
      boolean incorrectAnswerThreeD = answerThreeD.isChecked(); 

      RadioButton answerFour = (RadioButton) findViewById(R.id.radio_four_correct); 
      boolean correctAnswerFour = answerFour.isChecked(); 

      RadioButton answerFive = (RadioButton) findViewById(R.id.radio_five_correct); 
      boolean correctAnswerFive = answerFive.isChecked(); 

      EditText answerSix = (EditText) findViewById(R.id.question_six_edit_text); 
      Editable correctAnswerSix = answerSix.getEditableText(); 

      int finalScore = calculateScore(correctAnswerOne, correctAnswerTwo, 
        incorrectAnswerThreeA, correctAnswerThreeB, correctAnswerThreeC, 
        incorrectAnswerThreeD, correctAnswerFour, correctAnswerFive, correctAnswerSix); 

      Toast.makeText(this, "Congratulations! You have a score of " + finalScore + " out of " + 
        "100", Toast.LENGTH_LONG).show(); 

    } 

} 

ありがとうございました。

答えて

0
if (answerSix) { 
    // something 
} else { 
    score = score - 100/6; 
} 

answerSixがEditableです - あなたは私はあなたが探しているものを理解していた場合、未定義の何か===偽

あなたはif (!answerSix.toString().equals("")) ...のようなものを(行うことができJS、たとえば、考えています正しく)

+0

感謝を。これはうまくいきましたが、answerSixが含まれているかどうかを調べるのではなく、特定の文字数よりも大きい文字が含まれている場合は、answerSixを採点しますか? – Mir

+0

'answerSix.toString()'は編集可能な文字列を返します。文字列の長さは、['String#length'](https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#length())を使用すると確認できます。 int。 –

0

これを試してみてください:

boolean correctAnswerSix = answerSix.length > 9; 
関連する問題