Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-复选框/单选按钮分数测验应用程序_Java_Android_Checkbox - Fatal编程技术网

Java Android-复选框/单选按钮分数测验应用程序

Java Android-复选框/单选按钮分数测验应用程序,java,android,checkbox,Java,Android,Checkbox,我想就我的android代码寻求一些帮助 它应该使用正确的单选按钮和复选框单击添加一个点-确实如此-但有一个错误,我无法找出原因: 以下是java代码: package com.example.android.myquizapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.View; imp

我想就我的android代码寻求一些帮助

它应该使用正确的单选按钮和复选框单击添加一个点-确实如此-但有一个错误,我无法找出原因:

以下是java代码:

package com.example.android.myquizapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import static com.example.android.myquizapp.R.id.Tom;
import static com.example.android.myquizapp.R.id.score;


public class MainActivity extends AppCompatActivity {
    Button btnSubmit;
    int score = 0;

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

       Button btnSubmit = (Button)findViewById(R.id.btnSubmit);
        btnSubmit.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view){
                int score = 0;
                if (((RadioButton)findViewById(R.id.Monica)).isChecked()) {score++;}
                if (((RadioButton)findViewById(R.id.h5)).isChecked()) {score++;}
                if (((RadioButton)findViewById(R.id.a3)).isChecked()) {score++;}            
                if (((CheckBox) findViewById(R.id.Tom)).isChecked()){score++;}
                if (((CheckBox) findViewById(R.id.Brad)).isChecked()){score++;}
                if (((CheckBox) findViewById(R.id.Bruce)).isChecked()){score++;}

            {displayResult(score);}}

    });}
    private void displayResult() {
        String message = "You scored " + score;
        message += " out of 6";
        message += "\nWell done!";
        Toast toast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER, 0 , 0);
        toast.show();
    }}

Android studio中的“分数”一词用红色下划线标出:

{显示结果(分数);}

该应用程序运行良好,因此不太明白原因

您能帮助我吗?

您的displayResult()方法没有任何参数。你正在向它传递一个论点。这就是为什么你会看到红线


你的应用程序到底是如何工作的。您甚至无法编译带有此错误的代码。

首先,您必须声明int score=0;全局的,所以不需要在Onclick方法中本地声明。从Onclick方法中删除以下行

int score = 0;
然后,您将param score传递给displayResult()方法,但您没有使用params.call进行声明

   displayResult();

首先,您将
int score
传递给
displayResult()
方法,该方法不需要任何参数;其次,您将它包装在额外的
{}
括号中,这是错误的

此外,您已经初始化了两次
按钮btnSubmit
,这也是错误的。现在,由于您正在传递分数值,因此无需创建冗余且不在任何地方使用的
全局分数

您应该将代码修改为:

public class MainActivity extends AppCompatActivity {

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

        Button btnSubmit = (Button) findViewById(R.id.btnSubmit);
        btnSubmit.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view){
                int score = 0;
                if (((RadioButton)findViewById(R.id.Monica)).isChecked()) {score++;}
                if (((RadioButton)findViewById(R.id.h5)).isChecked()) {score++;}
                if (((RadioButton)findViewById(R.id.a3)).isChecked()) {score++;}
                if (((CheckBox) findViewById(R.id.Tom)).isChecked()){score++;}
                if (((CheckBox) findViewById(R.id.Brad)).isChecked()){score++;}
                if (((CheckBox) findViewById(R.id.Bruce)).isChecked()){score++;}

                displayResult(score);
            }

        });}
    private void displayResult(int score) {
        String message = "You scored " + score;
        message += " out of 6";
        message += "\nWell done!";
        Toast toast = Toast.makeText(this, message, Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER, 0 , 0);
        toast.show();
    }
}

希望这能解决您的问题

错误的消息是什么?以及为什么在该行中使用额外的{}?这是因为您关心通过分数作为
displayResult
函数中的参数,而在其声明中它不期望任何此类参数