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