Java Android应用猜测游戏限制猜测
又是我 试图限制我的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
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值进行比较。