我尝试进行交互式测验,并且在我的Java代码中有一个 EditText 视图,它是 Editable 。只要用户在此字段中输入答案(最少10个字符),他/她就会使其正确。但是,我的代码告诉我,我需要在 calculateScore 方法中将可编辑设置为 Boolean 。
任何人都知道如何在 calculateScore 方法中将可编辑作为布尔,同时还要检查是否符合最低字符数限制?< / p>
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 :(得分:0)
if (answerSix) {
// something
} else {
score = score - 100 / 6;
}
answerSix是Editable
- 您正在考虑JS,其中某些内容未定义=== false
您可以执行if (!answerSix.toString().equals("")) ...
之类的操作(如果我了解您正在寻找的内容)
答案 1 :(得分:0)
试试这个:
boolean correctAnswerSix = answerSix.length > 9;