Java / Android:第一个微型应用程序的回答始终为“ false”

时间:2019-02-14 17:26:26

标签: java android

我尝试创建我的第一个微型应用程序,但遇到问题

我的微型数学应用程序总是说我的答案是错误的。我不明白为什么。

这是我的第一个应用程序,我不知道我错了。

private TextView problem;
private EditText question;
private Button button;
private TextView reponse;
private int aleatoire = new Random().nextInt(61) + 20;
private int aleatoire2 = new Random().nextInt(48) + 20;
private int result = aleatoire + aleatoire2;

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

    problem = (TextView) findViewById(R.id.problem);
    question = (EditText)findViewById(R.id.editText);
    button   = (Button)findViewById(R.id.button);
    reponse = (TextView)findViewById(R.id.resultat);

    problem.setText("Result = "+aleatoire+"+"+aleatoire2);



    button.setOnClickListener(new View.OnClickListener() {


        @Override
        public void onClick(View v) {
            String str=question.getText().toString();

            if (str.equals(result)) {
                reponse.setText("True !");
            } else {
                reponse.setText("False !");
            }
        }
    });

总是回答“假”

我是开发界的新学生

2 个答案:

答案 0 :(得分:2)

代码的问题是您正在将字符串与整数进行比较,这就是为什么它总是返回false的原因,因为java是严格类型的语言。

问题代码:

   if(str.equals(result)){...}

可能的解决方案:

 if( str.equals(""+result)){...}

str.equals(String.valueof(result)) // best solution

if(result==Integer.parseInt(str)){...}

以下是更正的代码:

private TextView problem;
private EditText question;
private Button button;
private TextView reponse;
private int aleatoire = new Random().nextInt(61) + 20;
private int aleatoire2 = new Random().nextInt(48) + 20;
private int result = aleatoire + aleatoire2;

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

     problem = (TextView) findViewById(R.id.problem);
    question = (EditText)findViewById(R.id.editText);
    button   = (Button)findViewById(R.id.button);
    reponse = (TextView)findViewById(R.id.resultat);

    problem.setText("Result = "+aleatoire+"+"+aleatoire2);



    button.setOnClickListener(new View.OnClickListener() {


    @Override
 public void onClick(View v) {
        String str=question.getText().toString();

        if (str.equals(""+result)) {
            reponse.setText("True !");
        } else {
            reponse.setText("False !");
        }
    }
});

答案 1 :(得分:0)

正如azurefrog评论所说,您正在将字符串 int 进行比较。您将需要将str转换为int或将result转换为String。例如,您可以执行以下操作:

String str=question.getText().toString();

        if (str.equals(String.valueOf(result))) {
            reponse.setText("True !");
        } else {
            reponse.setText("False !");
        }