HOWTO · Java

Java Char を逆参照できない

このチュートリアルでは、Java で Char Cannot be Dereferenced エラーを解決する方法を示します。

このページの内容

このチュートリアルでは、Java の java char cannot be dereferenced エラーを解決する方法を示します。

Java Char を逆参照できない

equals() メソッドを使用して文字が別の文字と等しいことを確認しようとすると、エラー java char cannot be dereferenced が発生します。 Java では、参照は変数またはオブジェクトへのアドレスであり、逆参照とは、その参照を通じて変数またはオブジェクトの機能にアクセスすることを意味します。

Char はプリミティブ型変数であり、プリミティブ型を逆参照すると、char を逆参照できませんまたはプリミティブ型 char でメソッドを呼び出すことができませんというエラーがスローされます。 このエラーは、プリミティブがオブジェクトではなく生の値と見なされるために発生します。

同じエラーをスローする例を次に示します。

package delftstack;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Example {
  public static void main(String args[]) {
    do {
      BufferedReader Buffered_Reader = new BufferedReader(new InputStreamReader(System.in));
      System.out.print("Enter Your String");
      String DemoString = Buffered_Reader.readLine();

      if (DemoString.length() < 10) {
        System.out.println("");
        System.out.println("Please input a valid 10 digit phone number");
        System.out.println("");
      } else {
        if (DemoString.charAt(3).equals('-') && DemoString.charAt(7).equals('-')) {
          System.out.println("2 Hyphens at 3 and 7");
        } else if (DemoString.charAt(3).equals('-') && DemoString.charAt(8).equals('-')) {
          System.out.println("2 Hyphens at 3 and 8");
        } else if (DemoString.charAt(3).equals('-') && DemoString.charAt(9).equals('-')) {
          System.out.println("2 Hyphens at 3 and 9");
        }
      }
    } while (1 < 2);
  }
}

上記のコードは、複数の char cannot be dereferenced エラーをスローします。 出力を参照してください:

Example.java:19: error: char cannot be dereferenced
                if (DemoString.charAt(3).equals('-') && DemoString.charAt(7).equals('-')) {
                                        ^
Example.java:19: error: char cannot be dereferenced
                if (DemoString.charAt(3).equals('-') && DemoString.charAt(7).equals('-')) {
                                                                            ^
Example.java:21: error: char cannot be dereferenced
                } else if (DemoString.charAt(3).equals('-')
                                               ^
Example.java:22: error: char cannot be dereferenced
                        && DemoString.charAt(8).equals('-')) {
                                               ^
Example.java:24: error: char cannot be dereferenced
                } else if (DemoString.charAt(3).equals('-')
                                               ^
Example.java:25: error: char cannot be dereferenced
                        && DemoString.charAt(9).equals('-')) {
                                               ^
6 errors
error: compilation failed

このエラーの解決策は、equals() メソッドの代わりに == 演算子を使用することです。 解決策を参照してください。

package delftstack;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Example {
  public static void main(String args[]) throws IOException {
    do {
      BufferedReader Buffered_Reader = new BufferedReader(new InputStreamReader(System.in));
      System.out.print("Enter Your String");
      String DemoString = Buffered_Reader.readLine();

      if (DemoString.length() < 10) {
        System.out.println("");
        System.out.println("Please input a valid 10 digit phone number");
        System.out.println("");
      } else {
        if (DemoString.charAt(3) == '-' && DemoString.charAt(7) == '-') {
          System.out.println("2 Hyphens at 3 and 7");
        } else if (DemoString.charAt(3) == '-' && DemoString.charAt(8) == '-') {
          System.out.println("2 Hyphens at 3 and 8");
        } else if (DemoString.charAt(3) == '-' && DemoString.charAt(9) == '-') {
          System.out.println("2 Hyphens at 3 and 9");
        }
      }

    } while (1 < 2);
  }
}

これで、エラー char cannot be dereferenced がコードで解決されました。 出力を参照してください:

Enter Your String0000000000
Enter Your String

Please input a valid 10 digit phone number

Enter Your String