-5

我正在尝试使其生成并显示一个随机数,并且用户将输入该数字并按 Enter 按钮。如果输入文本与生成的随机数匹配,它就会做一些事情。但是,当我尝试使用时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)
4

3 回答 3

3

转换randomString使用String.valueOf()方法然后使用equals()方法

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

   // Do some stuff..
}
于 2013-02-21T02:59:16.237 回答
2

这里实际上有两个问题:


Q1:你如何比较Java 中的 aString和 an ?int

答:你没有。您要么将 转换为Stringint要么将 转换intString。然后你用类似的类型进行比较。(Java 不支持原始类型和引用类型的比较......除了引用类型是适当类型的装箱类型的情况;例如比较Integerint工作。)

在这种情况下,将 转换为 String 会更方便,int因为您不需要处理 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)

您正在使用=您打算使用的地方==。您的代码尝试分配randomto的值message

于 2013-02-21T03:05:41.507 回答
1

这里有两个问题:

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

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

    如果(消息 == 随机){

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

于 2013-02-21T03:00:39.277 回答