如何在android中的if-then语句中使用'int'

时间:2013-02-21 02:57:30

标签: java android

我试图让它生成并显示一个随机数,然后用户输入数字并按下回车键。如果输入文本与生成的随机数匹配,那么它将执行某些操作。但是,当我尝试使用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)

3 个答案:

答案 0 :(得分:3)

使用random方法将String转换为String.valueOf(),然后使用equals()方法

if(message.equals(String.valueOf(random))
{

   // Do some stuff..
}

答案 1 :(得分:2)

这里实际上有两个问题:


Q1:你如何比较Java中的Stringint

答:你没有。您可以将String转换为int,也可以将int转换为String。然后你用相似的类型进行比较。 (Java不支持基元类型和引用类型的比较......除了引用类型是适当类型的盒装类型的情况;例如Integerint的比较有效。)< / 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)

这里有两个问题:

  1. 您要分配而不是比较。你应该使用message == random
  2. 您正在将字符串与int进行比较。你应该使用

    转换它

    int intMessage = Integer.parseInt(answer.getText()。toString());

    if(message == random){

  3. system32回答可能更安全,因为我在这里假设您的文本将是一个数字。