我是独立学习类的一名高中生,我完全不知道我在用 Eclipse 或 Java 做什么。我正在尝试制作一个应用程序来给出数学问题,让您回答并继续前进。如果你做对了我们错了,它会显示 toast 通知,但无论如何都要继续。我无法弄清楚如何让它在您提交答案后刷新所有值,并告诉您它是对还是错。我假设我需要某种类型的循环来继续执行代码,直到您关闭应用程序,但我不知道它应该是什么样子。有人可以帮助我吗?
package com.example.droidmaze;
import java.util.Random;
import android.os.Bundle;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
public class App extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app);
final Button sub=(Button) findViewById(R.id.button1);
final EditText answer=(EditText) findViewById(R.id.editText1);
final TextView messages=(TextView) findViewById(R.id.textView1);
int number1=0;
int number2=0;
Random randomGenerator = new Random();
for (int idx = 1; idx <= 10; ++idx){
int randomInt = randomGenerator.nextInt(10);
number1 += randomInt;
}
Random randomGenerator2 = new Random();
for (int idx = 1; idx <= 10; ++idx){
int randomInt = randomGenerator2.nextInt(10);
number2 += randomInt;
}
String message = number1 + "\n + \n" + number2;
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
final String sum = ""+ (number1 + number2);
messages.setText(message);
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String user_answer=answer.getText().toString();
if (sum.equals(user_answer)){
Toast.makeText(getApplicationContext(), "Congrats!",
Toast.LENGTH_LONG).show();
}
if (sum.equals(user_answer)){
Toast.makeText(getApplicationContext(), "Thats not quite right!",
Toast.LENGTH_LONG).show();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.app, menu);
return true;
}
最佳答案
可以通过以下方式完成:
public class MyActivity extends Activity {
private Button sub;
private EditText answer;
private TextView messages;
private String sum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app);
sub = (Button) findViewById(R.id.button1);
answer = (EditText) findViewById(R.id.editText1);
messages = (TextView) findViewById(R.id.textView1);
generateNumbers();
sub.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String user_answer = answer.getText().toString();
String toastMessage = "";
if (sum.equals(user_answer)) {
toastMessage = "Congrats!";
} else {
toastMessage = "Thats not quite right!";
}
Toast.makeText(getApplicationContext(), toastMessage ,
Toast.LENGTH_LONG).show();
generateNumbers();
}
});
}
private void generateNumbers() {
int number1 = 0;
int number2 = 0;
Random randomGenerator = new Random();
for (int idx = 1; idx <= 10; ++idx) {
int randomInt = randomGenerator.nextInt(10);
number1 += randomInt;
}
Random randomGenerator2 = new Random();
for (int idx = 1; idx <= 10; ++idx) {
int randomInt = randomGenerator2.nextInt(10);
number2 += randomInt;
}
String message = number1 + "\n + \n" + number2;
messages.setText(message);
sum = String.valueOf(number1 + number2);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.app, menu);
return true;
}
}
背后的逻辑是什么?嗯,所有用于数字生成的代码都已转移到另一种方法 - Don't Repeat Yourself
规则。我们启动此 Activity
,找到 Views
,生成数字。在 onClickListener
中,我们正在检查输入的值,如果它是正确的,那么我们将显示一条消息,如果不是 - 另一条消息,并且在任何情况下都会生成新的数字。如果变量是外部类的字段,您也可以在内部类中使用变量,在这种情况下不需要 final
修饰符。
关于java - 关于 while 循环的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22945650/