我试图让它生成并显示一个随机数,然后用户输入数字并按下回车键。如果输入文本与生成的随机数匹配,那么它将执行某些操作。但是,当我尝试使用if(message=random)
时,会出现错误,指出“类型'int'的实例不能分配给'java.lang.String'类型的变量。我不知道该怎么做或如何解决这个问题。
我的代码就在这里:
Public class MainActivity extends Activity {
/** Called when the activity is first created. */
int random = (int)Math.ceil(Math.random()*100);
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView number = (TextView)findViewById(R.ID.number);
number.setText("" + random);
}
public void enter(View view)
{
EditText answer = (EditText) findViewById(R.id.answer);
String message = answer.getText().toString();
if(message=random)
答案 0 :(得分:3)
使用random
方法将String
转换为String.valueOf()
,然后使用equals()
方法
if(message.equals(String.valueOf(random))
{
// Do some stuff..
}
答案 1 :(得分:2)
这里实际上有两个问题:
Q1:你如何比较Java中的String
和int
?
String
转换为int
,也可以将int
转换为String
。然后你用相似的类型进行比较。 (Java不支持基元类型和引用类型的比较......除了引用类型是适当类型的盒装类型的情况;例如Integer
和int
的比较有效。)< / p>
在这种情况下,将int
转换为String更方便,因为您不需要处理String不是有效整数的情况。因此:
if (message.equals(String.valueOf(random)) ...
但如果你想测试random
是否(比如说)小于 message
代表的数字,那就不行了。你需要做这样的事情:
try {
if (number < Integer.parseInt(message)) ...
} catch (NumberFormatException ex) {
// do something ...
}
Q2:为什么你得到那个奇怪的编译错误?
"An instance of type 'int' can not be assigned to a variable
of type 'java.lang.String'"
答:看一下声明:
if(message=random)
您正在使用=
打算使用==
。您的代码尝试将<{1}}的值分配给random
。
答案 2 :(得分:1)
这里有两个问题:
您正在将字符串与int进行比较。你应该使用
转换它int intMessage = Integer.parseInt(answer.getText()。toString());
if(message == random){
system32回答可能更安全,因为我在这里假设您的文本将是一个数字。