Java Android应用猜测游戏限制猜测

Java Android应用猜测游戏限制猜测,java,android,if-statement,while-loop,Java,Android,If Statement,While Loop,又是我 试图限制我的android猜谜游戏中的猜谜次数,但我正在尝试比较两个整数,而其中一个已经转换为字符串: while (userGuess != userNumber && ++attempts < maxAttempts) ; while(userGuess!=userNumber&&++attempts

又是我

试图限制我的android猜谜游戏中的猜谜次数,但我正在尝试比较两个整数,而其中一个已经转换为字符串:

while (userGuess != userNumber && ++attempts < maxAttempts) ;
while(userGuess!=userNumber&&++attempts
我不知道怎样才能改变它

顺便说一句,我知道目前我的代码将直接进入最终的if语句,每次我按下guess按钮,它都会说我已经尝试了3次

谢谢

package lab.mad.cct.c3375331task1;

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.Random;

public class Task1Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.task1_layout);

        final TextView textResponse = (TextView)  findViewById(R.id.txtResponse);
        final TextView guessText = (TextView) findViewById(R.id.txtAnswer);
        final EditText userGuess = (EditText) findViewById(R.id.etNumber);

        Button pressMe = (Button) findViewById(R.id.btnGuess);



        // When the button is clicked, it shows the text assigned to the txtResponse TextView box
        pressMe.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String randText = "";
                Random randGen = new Random();
                int ranNum = randGen.nextInt(5);
                int userNumber = Integer.parseInt(userGuess.getText().toString());
                int attempts = 0;
                final int maxAttempts = 3;

                while (userGuess != userNumber && ++attempts < maxAttempts) ;

                if (userNumber >19 ) {
                    guessText.setText("Please guess between 0 and 20");
                } else if (userNumber == ranNum) {
                    guessText.setText("You did it!");
                    guessText.setBackgroundColor(Color.WHITE);
                } else if (userNumber < ranNum) {
                    guessText.setText("Your answer is too low. Guess  again!");
                    guessText.setBackgroundColor(Color.RED);
                } else if (userNumber > ranNum) {
                    guessText.setText("Your answer is too high.  Guess again!");
                    guessText.setBackgroundColor(Color.RED);
                }



                if (attempts == maxAttempts)
                    guessText.setText("You have guessed incorrectly three times.  The answer was" + ranNum);

                randText = Integer.toString(ranNum);
                textResponse.setText("");

                userGuess.setText("");

            }  
        });

    } 



}
package lab.mad.cct.c3375331task1;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.TextView;
导入java.util.Random;
公共类Task1活动扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.task1_布局);
最终TextView textResponse=(TextView)findViewById(R.id.txtResponse);
最终文本视图猜测文本=(文本视图)findViewById(R.id.txtAnswer);
最终EditText userGuess=(EditText)findViewById(R.id.etNumber);
按钮pressMe=(按钮)findViewById(R.id.b语言);
//单击按钮时,将显示分配给txtResponse文本视图框的文本
pressMe.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
字符串randText=“”;
Random randGen=新的Random();
int ranNum=randGen.nextInt(5);
int userNumber=Integer.parseInt(userGuess.getText().toString());
int=0;
最终整数最大尝试数=3;
while(userGuess!=userNumber&&++attempts19){
setText(“请猜0到20之间”);
}else if(userNumber==ranNum){
猜文本。setText(“你做到了!”);
猜文本.背景颜色(颜色.白色);
}else if(userNumberranNum){
猜文本。setText(“你的答案太高了。再猜一次!”);
猜文本。背景颜色(颜色。红色);
}
如果(尝试次数==最大尝试次数)
setText(“您猜错了三次,答案是“+ranNum”);
randText=Integer.toString(ranNum);
textResponse.setText(“”);
userGuess.setText(“”);
}  
});
} 
}

运算符“!=”无法应用于“android.widget.EditText”、“int”

正如错误所说,
userGuess
userNumber
不能这样比较,因为它们在
int
中不同,而另一个是
android.widget.EditText

您应该首先在
userGuess
上使用
gettext()
,然后将其与
userNumber
进行比较,稍后将其转换为
String
,或者将其转换为
int

试试这个

 while(userGuess.getText().equals(String.valueOf(ranNum)  && attempts++ < maxAttempts )
while(userGuess.getText().equals(String.valueOf(ranNum)&&truments++

另外,将
尝试次数
声明为全局,您在每次不需要的单击时都会重置它。如果您想执行3次单击,请删除
while loop
。同时删除
userNumber
,则不需要它。

您得到的确切错误是什么,是否可以发布错误跟踪。当然。它是:Operator'!='无法应用对于“android.widget.EditText”,“int”,您可以从EditText获取字符串值,然后使用Integer.parseInt()与您的int值进行比较。