Java 我的+;,-计算游戏程序

Java 我的+;,-计算游戏程序,java,android-studio,Java,Android Studio,我是android studio的初学者,我想做一个简单的计算游戏程序。(1~99/+,-) 但是这个程序中有很多错误,我不知道应该修复什么。 错误:类型/expected/“;”的开头非法应为/应为类、接口或枚举 (尤其是“预期的类、接口或枚举”错误太多) 这是程序代码 package com.example.hello; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import andr

我是android studio的初学者,我想做一个简单的计算游戏程序。(1~99/+,-) 但是这个程序中有很多错误,我不知道应该修复什么。 错误:类型/expected/“;”的开头非法应为/应为类、接口或枚举 (尤其是“预期的类、接口或枚举”错误太多) 这是程序代码

package com.example.hello;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Random;

public class MainActivity extends AppCompatActivity {
    Random ran=new Random();
    int n1=ran.nextInt(98)+1;
    int n2=ran.nextInt(98)+1;
    int n3=ran.nextInt(2);
    int answer=0;
    int acnt=0;
    int qcnt=0;

    if(n3==0){
        answer = n1 + n2;
        qcnt++;
    }
    else{
        answer=n1-n2;
        qcnt++;
    }

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

        final TextView tv=(TextView)findViewById(R.id.Question);
        final TextView tv2=(TextView)findViewById(R.id.result);
        final EditText eText=(EditText)findViewById(R.id.Answer);
        Button bt1=(Button)findViewById(R.id.bt1);
        Button bt2=(Button)findViewById(R.id.bt2);
        Button bt3=(Button)findViewById(R.id.endbt);

        if (n3==0)
            tv.setText(n1+"+"+n2+"=");
        else
            tv.setText(n1+"-"+n2+"=");

        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String str = eText.getText().toString();
                if (Integer.parseInt(str) == answer){
                    Toast.makeText(getApplicationContext(), "Correct.", Toast.LENGTH_LONG).show();
                    acnt++;
                }
                else if (str==null)
                    Toast.makeText(getApplicationContext(), "Write the anser.", Toast.LENGTH_LONG).show();
                else
                    Toast.makeText(getApplicationContext(), "Wrong. The answer is "+answer, Toast.LENGTH_LONG).show();
            }
        });

        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int n1=ran.nextInt(98)+1;
                int n2=ran.nextInt(98)+1;
                int n3=ran.nextInt(98)+1;
                if (n3==0){
                    answer = n1 + n2;
                    tv.setText(n1+"+"+n2+"=");
                    qcnt++;
                }
                else{
                    answer=n1-n2;
                    tv.setText(n1+"-"+n2+"=");
                    qcnt++;
                }
            }
        });

        bt3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tv2.setText(acnt+"/"+qcnt+", percentage: "+(float)(acnt/qcnt)+"%");
            }
        });
    }
}

不允许代码编译的主要问题是直接放在类中的
if-else
语句:

if (n3 == 0) {
    answer = n1 + n2;
    qcnt++;
} else {
    answer = n1 - n2;
    qcnt++;
}
它需要放在A)初始值设定项块或B)方法中:

(A)

(B)


除了我之前关于编译错误的回答外,下面是代码的改进版本

3个主要修改

  • onCreate
    方法(生成初始问题)和
    onClick
    方法(单击按钮后生成新问题)中调用创建问题的方法(即
    makeNewQuestion
  • 创建显示问题的方法(
    displayQuestion(TextView tv)
    也在
    onCreate
    onClick
    方法中调用),其中原始的“如果”条件被“三元运算符”替换
  • n1
    n2
    变量赋值中,将
    ran.nextInt(98)+1
    替换为
    ran.nextInt(99)+1
    ,因为
    @param-bound
    中的上限不包括绑定值


  • 您好,如果您可以包含错误消息,那就太好了。这可能有助于发现问题。请将所有代码移到onCreate方法中。
    {
        if (n3 == 0) {
            answer = n1 + n2;
            qcnt++;
        } else {
            answer = n1 - n2;
            qcnt++;
        }
    }
    
    @Override                                                            
    protected void onCreate(Bundle savedInstanceState) {                 
        super.onCreate(savedInstanceState);                              
                                                                         
        if (n3 == 0) {                                                   
            answer = n1 + n2;                                            
            qcnt++;                                                      
        } else {                                                         
            answer = n1 - n2;                                            
            qcnt++;                                                      
        }                                                                
    
    package com.example.hello;
    
    import androidx.appcompat.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    import android.widget.Toast;
    import java.util.Random;
    
    public class MainActivity extends AppCompatActivity {
        Random ran = new Random();
        int n1;
        int n2;
        int n3;
        int answer;
        int acnt;
        int qcnt;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            final TextView tv = (TextView)findViewById(R.id.Question);
            final TextView tv2 = (TextView)findViewById(R.id.result);
            final EditText eText = (EditText)findViewById(R.id.Answer);
            Button bt1 = (Button)findViewById(R.id.bt1);
            Button bt2 = (Button)findViewById(R.id.bt2);
            Button bt3 = (Button)findViewById(R.id.endbt);
    
            makeNewQuestion();
            displayQuestion(tv);
    
            bt1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String str = eText.getText().toString();
                    if (Integer.parseInt(str) == answer) {
                        Toast.makeText(getApplicationContext(), "Correct.", Toast.LENGTH_LONG).show();
                        acnt++;
                    } else if (str == null)
                        Toast.makeText(getApplicationContext(), "Write the answer.", Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(getApplicationContext(), "Wrong. The answer is " + answer, Toast.LENGTH_LONG).show();
                }
            });
    
            bt2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    makeNewQuestion();
                    displayQuestion(tv);
                }
            });
    
            bt3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    tv2.setText(acnt + "/" + qcnt + ", percentage: " + (float) (acnt / qcnt) + "%");
                }
            });
        }
    
        private void displayQuestion(TextView tv) {
            String operator = (n3 == 0) ? "+" : "-";
            tv.setText(n1 + operator + n2 + "=");
        }
    
        private void makeNewQuestion() {
            n1 = ran.nextInt(99) + 1;
            n2 = ran.nextInt(99) + 1;
            n3 = ran.nextInt(2);
            qcnt++;
    
            if (n3 == 0) {
                answer = n1 + n2;
            } else {
                answer = n1 - n2;
            }
        }
    }