1. ホーム
  2. java

[解決済み] プリミティブ型のintに対してequals(String)を実行できないエラー?[クローズド]です。

2022-02-15 19:50:45

質問内容

で困っています。 if statement block の下にあります。

public void viewaccount ( ) {
    Scanner getinput = new Scanner(System.in);
    System.out.println("Enter your account number to log in");
    int login = getinput.nextInt();
    if (login.equals("accnumber")) {   // <== here
        /* to be written */
    }
}

解決方法は?

.equals(String) は、2つの文字列が同じ文字/テキストを含むかどうかをチェックするメソッドです。明らかに、あなたは .equals() なぜなら、int型には文字が含まれていないからです(もちろん、人間が読める形に変換されるまではそうです)。

ユーザーが正しく入力したかどうかを確認したい場合 口座番号 というようなことをする必要があります。

public void viewaccount() {

    Scanner getinput = new Scanner(System.in);
    System.out.println("Enter your account number to log in");
    int login = getinput.nextInt();

    // Correct account number:
    int correctAccountNumber = 1234567;

    if (login == correctAccountNumber) {
        // Hooray! Success.


    }else{
        System.out.println("You have entered the incorrect account number.");
    }

}

もしこれが実際のアプリケーションで使われるとしたら、セキュリティの観点からは悪夢としか言いようがありません。


より深く見ていただくために .equals() を読むことをお勧めします。 Java の Objects クラス . int プリミティブデータ型 のようなメソッドは組み込まれていません。 String が持っています。 String 複合データ型 を使用することができます。 String のようなメソッドと属性を持つことができます。 .length() , .equals() , .trim() などなど。

Javaでは、すべてのクラスが Object をスーパークラスとすることで、すべてのクラスと複合データ型に .equals() , .hashcode() および .toString() しかし、その上に、すべての複合データ型は、独自のメソッドを実装することもできる。例えば Integer データ型(これはプリミティブな int のような関数が追加されます。 .parseInt().compare() .

多くの言語と異なり、Javaはプリミティブなデータ型と、それらすべてのデータ型に対する組み込みのラッパークラスを提供します。 int があります。 Integer . boolean があります。 Boolean . long があります。 Long . char があります。 Character . そして、他のすべてのプリミティブ型について、このリストが続きます。