java - 为什么我的 .isEmpty 在此代码中不起作用?

标签 java android

我想编写一个检查程序,检查用户是否在按下按钮之前写下一个数字进行检查。

public class MainActivity extends AppCompatActivity {
    int randomNumber;

    public void makeToast(String string) {
        Toast.makeText(MainActivity.this, string, Toast.LENGTH_LONG).show();
    }

    public void guess (View view) {
        final EditText showNumber = findViewById(R.id.showNumberEditText);

        int guessInt = Integer.parseInt(showNumber.getText().toString());

        if (showNumber.getText().toString().isEmpty()) {
            makeToast("Pleas Enter a Number!");
        } else if(guessInt > randomNumber) {
            makeToast("Lower");
        } else if (guessInt < randomNumber) {
            makeToast("Higher");
        } else {
            makeToast("Correct! Try Again!");

            Random random = new Random();
            randomNumber = random.nextInt(20) + 1;
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Random random = new Random();
        randomNumber = random.nextInt(20) + 1;
    }
}

最佳答案

您必须考虑到 EditText 可能尚未设置任何值,因此本质上可能包含 Null,因此 .toString().isEmpty() 可能会失败带有NullPointerException。另外如果它有文本,你还需要考虑它甚至可能不是数字,所以需要将其转换为整数。而且字符串不能直接与整数进行比较,因此必须进行这种整数转换。

尝试下一个代码:

public void guess (View view) {
final EditText showNumber = findViewById(R.id.showNumberEditText);

Integer guessInt = convertToInteger(showNumber.getText());

if (guessInt == null) {
    makeToast("Pleas Enter a Number!");
 }else if(guessInt > randomNumber) {
        makeToast("Lower");
    } else if (guessInt < randomNumber) {
        makeToast("Higher");
    } else {
        makeToast("Correct! Try Again!");
        Random random = new Random();
        randomNumber = random.nextInt(20) + 1;
    }
}

public static Integer convertToInteger(final Editable source) {
    if (source != null) {
        try {
            final String text = source.toString();
            return Integer.parseInt(text);
        }
        catch (NumberFormatException ex) {
            ex.printStackTrace();
        }
    }

    return null;
}

关于java - 为什么我的 .isEmpty 在此代码中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58663950/

相关文章:

java - 如何为给定路径创建文件(包括文件夹)?

java - 调用虚方法 null context.getSystemService

android - 安卓人脸识别

android - 单击设置按钮时墙纸应用程序崩溃

android - 如何在 Android 上使用 onPause?

java - android另一个类sendSMS并在Mainactivity中调用错误

JavaFX Web View : custom cursors not working?

java - 如何在 Java GUI 中做出多项选择

java - TLD、标签库和属性设置方法有问题

android - 升级Android Studio 2.1 Preview3 : Cannot configure the 'publishing' extension after it has been accessed