2016-08-25 28 views
0

我正在创建一个数学应用程序,用户在其中输入问题的答案。如果问题是3 * 2,并且用户按6,则它将评估所有按钮上的动态使用onClick函数。如果问题是5 * 2,我有问题,答案是10,当用户输入1时,它开始评估,并显示错误的答案,而不等待第二个数字。我该如何解决这个问题。程序必须等待第二个数字如果答案是两位数在java中验证第二个数字

public void onClick(View view) { 

    if(view.getId()==R.id.btn_one ||view.getId()==R.id.btn_two || view.getId()==R.id.btn_three || view.getId()==R.id.btn_four || view.getId()==R.id.btn_five || view.getId()==R.id.btn_six || view.getId()==R.id.btn_seven || view.getId()==R.id.btn_eight || view.getId()==R.id.btn_nine || view.getId()==R.id.btn_zero ||view.getId()== R.id.answer) 
    { 

     response.setVisibility(View.INVISIBLE); 
     //get number from tag 
     int enteredNum = Integer.parseInt(view.getTag().toString()); 

     //either first or subsequent digit 

    if(answerTxt.getText().toString().endsWith("?")) 
      answerTxt.setText("= "+enteredNum); 

     else 
     answerTxt.append(""+enteredNum); 
     String answerContent = answerTxt.getText().toString(); 
     if(!answerContent.endsWith("?")) 
     { 
      int enteredAnswer = Integer.parseInt(answerContent.substring(2)); 
      if(enteredAnswer == answer1) 
      { 
       response.setImageResource(R.drawable.tick); 
       response.setVisibility(View.VISIBLE); 

      } 
      else{ 
       response.setImageResource(R.drawable.cross); 
       response.setVisibility(View.VISIBLE); 
      } 

      selectQuestion(); 
     } 
    } 
+1

还有更多:如果有什么问题是 “10 * 10”?答案有3位数字。所以,你需要一个更通用的解决方案。一个想法:有另一个按钮 - 例如“确定” - 用户必须点击_进入答案。评估仅在点击该按钮时开始。说了这些,你的问题有点过于宽泛。 – Seelenvirtuose

+0

要么你需要提交/输入按钮,用户在完成答案后必须按下,或者在显示验证结果之前保留一些缓冲时间(例如:3秒),以便缓冲时间允许用户按下下一个数字。在缓冲时间后仅显示给用户的最后结果 –

回答

-1

我的建议是,而不是使用keyboard输入;您可以动态生成4个按钮(或您选择的任意数量的按钮),并在浮雕上选择答案。
用户将被要求通过点击所需的按钮进行选择,然后您可以根据评估答案。你可以看看下面的代码片段来获取一些提示。

public void onClick(View v) { 
    Button button = (Button)v; 
    int answer = Interger.valueOf(button.getText().toString()); 
} 
-1

上单击按钮执行此操作。

  1. 添加新的按钮calculateButtononCreate()

    Button calculateButton = (Button) findViewById(R.id.calculateButton); 
    calculateButton.setOnClickListener(new OnClickListener() { 
    
    public void onClick(View v) { 
         int enteredNum1 = Integer.parseInt(etText1.getText().toString()); 
         int enteredNum2 = Integer.parseInt(etText2.getText().toString()); 
         int result = enteredNum1 * enteredNum2;   
        } 
    }); 
    
+0

该解决方案已在评论中提出。只是向它添加代码并不能解决问题。 – CodeWalker

相关问题