HOWTO · Java
Java Char kann nicht dereferenziert werden
Dieses Tutorial zeigt, wie Sie den Fehler `Char kann nicht dereferenziert werden` in Java beheben.
Auf dieser Seite
Dieses Tutorial zeigt, wie Sie den Java-Fehler Java-Zeichen können nicht dereferenziert werden beheben.
Java Char kann nicht dereferenziert werden
Der Fehler Java-Zeichen kann nicht dereferenziert werden tritt auf, wenn wir versuchen, die Methode equals() zu verwenden, um zu überprüfen, ob ein Zeichen mit einem anderen gleich ist. In Java ist eine Referenz eine Adresse zu einer Variablen oder einem Objekt, und die Dereferenzierung bedeutet, über diese Referenz auf die Funktionen einer Variablen oder eines Objekts zuzugreifen.
Char ist eine Variable vom primitiven Typ, und das Dereferenzieren eines primitiven Typs wird den Fehler char kann nicht dereferenziert werden oder cannot invoke a method on primitive type char ausgeben. Dieser Fehler tritt auf, weil das Primitiv als Rohwerte und nicht als Objekte betrachtet wird.
Hier ist ein Beispiel, das denselben Fehler auslöst:
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);
}
}
Der obige Code löst mehrere char kann nicht dereferenziert werden-Fehler aus. Siehe Ausgabe:
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
Die Lösung für diesen Fehler ist die Verwendung des Operators == anstelle der Methode equals(). Siehe die Lösung:
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);
}
}
Nun ist der Fehler char not be dereferenced im Code behoben. Siehe Ausgabe:
Enter Your String0000000000
Enter Your String
Please input a valid 10 digit phone number
Enter Your String