HOWTO · Java
Java Char no se puede desreferenciar
Este tutorial demuestra cómo resolver el error Char Cannot be Dereferenced en Java.
En esta página
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