【问题标题】:The conditional statement if is not working properly [duplicate]条件语句 if 无法正常工作 [重复]
【发布时间】:2016-03-06 08:35:59
【问题描述】:

我对大学申请测验有疑问。
即使我通过了正确答案应用程序崩溃:Incorrect on the main activity screen.
请帮帮我。
我认为问题在于活动之间或 if 指令中的变量传输。

我的 MainActivity 代码:

package com.example.mariusz.qiuz;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.View;

import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {


    Button b3;
    private static final String answer_1= "Mariusz";
    @Override
    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        b3 = (Button) findViewById(R.id.answer1);


        b3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                startActivity(new Intent(MainActivity.this, Answer1Activity.class));

            }
        });
        Intent intent = getIntent();
        String message = intent.getStringExtra(Answer1Activity.EXTRA_MESSAGE);
        if (message != null ) {

            if (message == answer_1) {
                TextView textView_1 = new TextView(MainActivity.this);
                textView_1.setGravity(Gravity.CENTER);
                textView_1.setTextSize(40);
                textView_1.setText(R.string.correct);
                LinearLayout activity_main = (LinearLayout)findViewById(R.id.layout);
                activity_main.addView(textView_1);
            } else {
                TextView textView_1 = new TextView(MainActivity.this);
                textView_1.setGravity(Gravity.CENTER);
                textView_1.setTextSize(40);
                textView_1.setText(R.string.incorrect);
                LinearLayout activity_main = (LinearLayout)findViewById(R.id.layout);
                activity_main.addView(textView_1);
            }
        }
        else {

        }
            }

    }

还有我的第二个活动代码:

package com.example.mariusz.qiuz;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

/**
 * Created by Mariusz on 2016-03-04.
 */
public class Answer1Activity extends Activity {

    public final static String EXTRA_MESSAGE = "com.example.mariusz.quiz.MESSAGE";

    Button a1;
    EditText e1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.answer1);
        a1 = (Button) findViewById(R.id.buttona1);
        e1 = (EditText) findViewById(R.id.text1);
        a1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                Intent intent = new Intent(Answer1Activity.this, MainActivity.class);

                String message = e1.getText().toString();
                intent.putExtra(EXTRA_MESSAGE, message);
                startActivity(intent);


            }
        });


    }
}

【问题讨论】:

  • 我建议对字符串使用 if (message.contains(answer_1)) { } 而不是 '=='
  • 还要注意package com.example.mariusz.qiuz; 拼写错误。而这个public final static String EXTRA_MESSAGE = "com.example.mariusz.quiz.MESSAGE"; 会报错(因为这个没有拼错)。

标签: android if-statement string-comparison


【解决方案1】:

这不是检查两个字符串的正确方法,所以尝试替换这一行

if (message == answer_1) {

有

if (message.equalsIgnoreCase(answer_1)) {

注意: 我使用了equalsIgnoreCase,因为我认为你不需要为给定的答案区分大小写。

【讨论】:

  • @M.Świerczek 这是我们的荣幸。如果问题得到解决,我建议您检查任何答案是否正确...
  • 如何检查答案是否正确?
【解决方案2】:

始终使用string.equals(String other) 函数来比较字符串,而不是== 运算符。

string.equals(String other) 函数检查字符串的实际内容,但是 == 运算符检查对对象的引用是否相等。

equalsIgnoreCase 是另一个在不考虑大小写时使用的函数

【讨论】:

    猜你喜欢
    • 2019-07-23
    • 2015-09-27
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多