Java Char no se puede desreferenciar

Sheeraz Gul 12 octubre 2023
Java Char no se puede desreferenciar

Este tutorial demuestra cómo resolver el error de Java java char no se puede desreferenciar.

Java Char no se puede desreferenciar

El error java char no se puede desreferenciar se produce cuando intentamos utilizar el método equals() para comprobar que un carácter es igual a otro. En Java, la referencia es una dirección a una variable u objeto, y la desreferenciación significa acceder a las características de una variable u objeto a través de esa referencia.

Char es una variable de tipo primitivo, y desreferenciar un tipo primitivo generará el error “char no se puede desreferenciar” o “no se puede invocar un método en el tipo primitivo char”. Este error ocurre porque la primitiva se considera valores sin procesar en lugar de objetos.

Aquí hay un ejemplo que arroja el mismo error:

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);
  }
}

El código anterior arrojará múltiples errores de char no se puede desreferenciar. Ver salida:

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

La solución a este error es utilizar el operador == en lugar del método equals(). Ver la solución:

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);
  }
}

Ahora se soluciona en el código el error char no se puede desreferenciar. Ver salida:

Enter Your String0000000000
Enter Your String

Please input a valid 10 digit phone number

Enter Your String
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Java Error