簡體   English   中英

檢查用戶是否確定正確

[英]Check if user decided correct

我目前正在做一個學校項目(一個小型​​的android游戲),到目前為止,我已經編寫了一個代碼,該代碼在啟動InGame活動2秒后會生成一個random equation並將其顯示在textview 再過5秒鍾后,第二個等式將生成並顯示在不同的文本視圖中。 現在,用戶必須通過按biggersmaller的按鈕來確定第二個方程式的結果是否大於第一個方程式。 如果正確,則應顯示下一個等式,它將繼續這樣,直到用戶確定錯誤為止。 到目前為止,這是我的代碼:(第一個方程式的代碼):

// Generate random equation and display it in textview

String[] operationSet = new String[]{"+", "-", "/", "*"};
String equation;
static double doubleAnswer1;
public void start1() {
    Random random = new Random();
    int numOfOperations = random.nextInt(2) + 1;

    List<String> operations = new ArrayList<>();

    for (int i = 0; i < numOfOperations; i++) {
        String operation = operationSet[random.nextInt(4)];
        operations.add(operation);
    }

    int numOfNumbers = numOfOperations + 1;
    List<Integer> numbers = new ArrayList<>();

    for (int i = 0; i < numOfNumbers; i++) {
        int number = random.nextInt(10)+1;
        numbers.add(number);
    }

    String equation = "";
    for (int i = 0; i < numOfOperations; i++) {
        equation += numbers.get(i);
        equation += operations.get(i);
    }
    equation += numbers.get(numbers.size() -1);

    TextView TextEquation = (TextView)findViewById(R.id.textView_first_equation);
    TextEquation.setText(equation);

    // Evaluate the result of the equation

    double doubleAnswer1 = eval(equation);

    String stringAnswer = Double.toString(doubleAnswer1);

    TextView textAnswer = (TextView)findViewById(R.id.textView4);
    textAnswer.setText(stringAnswer);
}

(第二個方程式的代碼(與第一個方程式基本相同,只是字符串和雙精度名稱不同)):

String equation2;
static double doubleAnswer2;
public void start2() {
    Random random = new Random();
    int numOfOperations = random.nextInt(2) + 1;

    List<String> operations = new ArrayList<>();

    for (int i = 0; i < numOfOperations; i++) {
        String operation = operationSet[random.nextInt(4)];
        operations.add(operation);
    }

    int numOfNumbers = numOfOperations + 1;
    List<Integer> numbers = new ArrayList<>();

    for (int i = 0; i < numOfNumbers; i++) {
        int number = random.nextInt(10)+1;
        numbers.add(number);
    }

    String equation2 = "";
    for (int i = 0; i < numOfOperations; i++) {
        equation2 += numbers.get(i);
        equation2 += operations.get(i);
    }
    equation2 += numbers.get(numbers.size() -1);

    TextView TextEquation = (TextView)findViewById(R.id.textView3);
    TextEquation.setText(equation2);

    // Evaluate the result of the equation

    double doubleAnswer2 = eval(equation2);

    String stringAnswer = Double.toString(doubleAnswer2);

    TextView textAnswer = (TextView)findViewById(R.id.textView_result2);
    textAnswer.setText(stringAnswer);
}

這是我的onCreate代碼:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.ingame);

    // Display first equation 2 seconds after the activity is launched

    final Handler handler1 = new Handler();
    handler1.postDelayed(new Runnable() {
        @Override
        public void run() {
            start1();
        }
    }, 2000);

    final Handler handler2 = new Handler();
    handler2.postDelayed(new Runnable() {
        @Override
        public void run() {
            start2();
        }
    }, 7000);

    // Check if user was right or wrong

    final Button buttonBigger = (Button)findViewById(R.id.button_bigger);
    final Button buttonSmaller = (Button)findViewById(R.id.button_smaller);

    View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(v.equals(buttonBigger) && doubleAnswer1 < doubleAnswer2) {
                Log.v("TAG", "you are right");
            } else if(v.equals(buttonSmaller) && doubleAnswer1 > doubleAnswer2) {
                Log.v("TAG", "you are right");
            } else {
                Log.v("TAG", "you are wrong");
            }
        }
    };

    buttonBigger.setOnClickListener(listener);
    buttonSmaller.setOnClickListener(listener);
}

該應用程序可以正確啟動,並且還顯示第first and second方程式,但是當我按下其中一個按鈕時,它會在logcat告訴我you are wrong但我決定100%正確。 但是,如果我調試該應用程序,它會告訴我doubleAnswer1和doubleAnswer2都both = 0.這就是為什么所有方法都告訴我“你錯了”。 我不知道如何解決此問題,也許我需要將doubleAnswer1和doubleAnswer2存儲在某個地方。 我真的不知道該怎么辦,所以如果有人知道該怎么做,那對我真的很有幫助。

如果我的問題不清楚,請隨時提出,我將盡力澄清問題。

預先感謝您的幫助!

我認為您的問題出在這里:

double doubleAnswer1 = eval(equation);

我進行了快速的Internet搜索,但未找到任何名為eval()的本機函數。 相反,您應該查看Java的腳本引擎管理器:

ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("JavaScript");
String foo = "40+2";
System.out.println(engine.eval(foo));

或顯示在此處的exp4j: 在Android中執行數學方程式

編輯:更改以下內容:

double doubleAnswer1 = eval(equation);

至:

doubleAnswer1 = eval(equation);

類似地對doubleAnswer2做同樣的事情

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM