java - 关于 while 循环的问题

标签 java android eclipse while-loop do-while

我是独立学习类的一名高中生,我完全不知道我在用 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/

相关文章:

java - 不确定这个类是如何工作的

android - xml 属性 singleLine 在 Android 中是否已弃用?

java - 有什么方法可以读取java中导入项目的文件路径吗?

java - 如何使用Java在MySQL中插入日期

java - 创建运行时特定于类的寄存器系统的最佳方法?

android - 如何使用 gradle 4.6 版本配置我的 Android 应用程序

java - 安卓/Java : Is my code correct?

eclipse - 使用 Eclipse 和 Egit 时无法推送到上游

eclipse - 如何设置 eclipse java 调试器中的当前执行行?

java - 访问 JavaFx TableView/TableColumn 中的嵌套属性