运算符“>”不能应用于 'android.widget.EditText'、'int'

Operator '>' cannot be applied to 'android.widget.EditText','int'

我正在为 Android 开发一个应用程序,它将生成 1 到 10,000 之间的随机数并将其与 EditText inputType:number 进行比较,然后在 TextView 中判断它是更大还是更小.

但是当我尝试制作时,android工作室returns出错

Operator '>' cannot be applied to 'android.widget.EditText','int'

代码如下:

package com.boodle.guessthenumber;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends ActionBarActivity {

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


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

        public void guess (View view){

        EditText textguess = (EditText) findViewById ( R.id.textguess );

        TextView result = (TextView) findViewById(R.id.resulto);

        int rand = (int) (Math.random()*10000+1);

        if (textguess > rand) {
            result.setText(textguess.getText() + "is too big" );
            }

        if (textguess < rand) {
            result.setText(textguess.getText() + "is too small" );
            }

        }

您不能使用比较运算符(合理地)比较整数和 EditText 的实例 class。

在这里,您想要获取您的 EditText 包含的数字:

String guessStr = textguess.getText().toString();

然后,要获得要与之比较的实际整数值,

int theGuess = Integer.parseInt(guessStr);

EditText 是一个包含很多字段的复杂对象,而 int rand 只是一个整数。将整个 EditText 对象及其所有不同的字段与一个数字进行比较是没有意义的。

在这种情况下,您必须挑选出用户在 EditText 字段中输入的文本——即使您指定它是一个数字,该文本也始终是 String -only 字段 -- 然后使用 Integer class' parseInt 方法将 String 转换为可以与 int.[=21= 进行比较的内容]

如果你的目标是原型 'guess the number' 游戏,那么你的代码还有一个问题:

每次您的用户尝试猜测时,他们每次都会根据新的随机数检查他们的猜测,因为您在 [=20= 中生成了他们每次尝试猜测的数字] 功能。

1) 您不能在 onCreate 之外分配视图。您可以做的是声明 class-wide 视图对象,然后在 onCreate 中用 findviewbyid() 分配它们,这样您就可以使用它们 class-wide.

2) 要获取要比较的数字,您首先需要执行 input = (EditText object).gettext.toString() 然后 entery = Integer.parseInt(input)。之后你可以比较数字。

抱歉格式化,我正在使用该应用程序。