HOWTO · Java

Java Char를 역참조할 수 없음

이 튜토리얼은 Java에서 Char Cannot be Dereferenced 오류를 해결하는 방법을 보여줍니다.

이 페이지의 내용

이 튜토리얼은 Java의 java char cannot be dereferenced 오류를 해결하는 방법을 보여줍니다.

Java Char를 역참조할 수 없음

java char cannot be dereferenced 오류는 equals() 메서드를 사용하여 문자가 다른 문자와 같은지 확인하려고 할 때 발생합니다. 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