Compiler-Fehler cannot find symbol

2Crazy4Nick

Mitglied
Ich habe versucht,

int i = str.length;

zu setzen, wobei str der String ist, jedoch zeigt er mir beim compilen einen error an.
Das gleiche kommt später noch mal und zwar 3 mal in der Zeile

if (charAt(x) == ClosingClampRound || charAt(x) == ClosingClampCurved || charAt(x) == ClosingClampBoxed)

x ist "int x = 0"
ClosingClampRound und die anderen beiden sind durch

String ClosingClampRound = ")";
String ClosingClampCurved = "}";
String ClosingClampBoxed = "]";

deklariert.
Da es sich hierbei um meine erste Programmierarbeit in Rahmen eines Übungszettels für die Uni handelt bin ich dementsprechend Ahnungs- und Hilflos X_x

Ich verstehe einfach nicht, wo der Fehler liegt
 

timbeau

Gesperrter Benutzer
1. Fehler: Schau dir mal an wie man die charAt(int) Methode benutzt. Nämlich mit STRING.charAT(int)

2. Ein Fehler ist es charAt mit String per "==" vergleichen zu wollen. Bin mir ziemlich sicher, dass das immer falsch ist. dann lieber 2x charAt
 

2Crazy4Nick

Mitglied
1. Fehler: Schau dir mal an wie man die charAt(int) Methode benutzt. Nämlich mit STRING.charAT(int)

2. Ein Fehler ist es charAt mit String per "==" vergleichen zu wollen. Bin mir ziemlich sicher, dass das immer falsch ist. dann lieber 2x charAt

Den Tipp mit den == bekam ich von nem C#'ler, der sich auch unsicher war, ob das in Java auch so funktioniert. Aber was meinst du mit 2x charAT?

Ich habe die Klammern als Strings deklariert und wollte, dass er nun char für char überprüft, ob das Zeichen an dieser Stelle mit einer der 3 Klammern übereinstimmt :/
 

timbeau

Gesperrter Benutzer
String.charAt(x) == Klammer.charAt(0);

oder die Klammern statt String als char deklarieren.

Dann kannste auch String.charAt(x) = klammer testen.

Ansonsten mal mit JAVA-Tags deinen kompletten code posten.
 

2Crazy4Nick

Mitglied
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Wohlgeformt {
	
	// Ueberprueft den gegebenen String auf Wohlgeformtheit
	static void check (String str) {
		boolean stringIsClosingClamp = false;  	// Lässt die Suchschleife nach einer geschlossenen Klammer weiterlaufen, wird true gesetzt, wenn geschlossene Klammer gefunden und beendet die Schleife.
		String ClosingClampRound = ")";		   
		String ClosingClampCurved = "}";
		String ClosingClampBoxed = "]";			// Definitionen für die geschlossenen Klammern
		
		int i = str.length;						// Variablendeklaration der gesamten Stringlänge des Klammernausdrucks
		int x = 0;
		
		while (x <=i && stringIsClosingClamp == false); {		// Während der Index x der zu untersuchenden Klammer kleiner oder gleich i, also der gesamten Stringlänge ist und noch keine geschlossene Klammer gefunden wurde, tue...
	
		if (string.charAt(x) == ClosingClampRound || string.charAt(x) == ClosingClampCurved || string.charAt(x) == ClosingClampBoxed)	// Wenn die untersuchte Klammer ")","}" oder "]" ist, setze stringIsClosingClamp auf true
			stringIsClosingClamp = true;
			else x++;
		}
	}
	

	public static void main(String[] args) {
		// Konsoleneingabe vorbereiten
		// (die Tastatureingabe wird gelesen und in gepufferter Form gesichert)
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("Bitte geben Sie einen Klammerausdruck ein:");
		// Zum Lesen der Eingabe muss eine Ausnahmebehandlung (Exception) eingefuegt werden,
		// da waehrend des Einlesens unerwartete Fehler auftreten koennten
		try {
			// der gelesene Klammerausdruck wird an die Methode check uebergeben
			// wo er auf Wohlgeformtheit ueberprueft wird
			check(input.readLine());
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}

Das ganze ist ein vorgegebenes Grundgerüst, ab

static void check (String str) {

bis

else x++;

ist selbst hinzugefügt. Wir sollen einen Klammerausdruck auf Wohlgeformtheit überprüfen können und zwar nur mit charAt, substring und while/if-Anweisungen
Daher kam ich drauf, in dem Klammerausdruck so lange von vorne zu suchen, bis die erste schließende Klammer gefunden wird, dann sollte die Schleife beendet werden. An der Stelle bin ich.
Danach muss dann die gefundene Klammer mit dem Zeichen mit dem index x-1 verglichen werden, was dann eine passende sein muss, damit das ganze wohlgeformt ist.
Ist es der Fall, werden beide Zeichen aus dem String gelöscht und das ganze beginnt von vorn...
so hab ich mir das zumindest gedacht
 

timbeau

Gesperrter Benutzer
Jo, als Tipp für später immer kleine Tests durchzuführen, mal den Ausdruck
Java:
char klammer = '{';
String klammer2 = "{";
System.out.println(klammer == klammer2);

testen. glaube das müsste so klappen. Sitze hier nur bei meiner Freundin und hab keine IDE hier. Und meine Tipps von oben befolgen. Denke da liegt der Fehler.

Ansonsten kannst du auch die Klammern zählen. Wenn am Ende des Strings noch offene Klammern vorhanden sind, ist er nicht wohlgeformt. Und ich nehme an, ein String der über kreuz schließt ist auch nicht wohlgeformt oder? "({)}" Also musst du auch gucken welche Klammer zum schließen nötig ist.
 
Zuletzt bearbeitet:

2Crazy4Nick

Mitglied
Java:
public class Test{

static void check (String str) {
char klammer = '{';
String klammer2 = "{";
System.out.println(klammer == klammer2);
	}
}

ergibt einen
\Test.java:6: error: incomparable types: char and String
System.out.println(klammer == klammer2);

//edit: Über Kreuz geschlossen ist nicht wohlgeformt, genau. Deswegen soll er ja die erste schließende suchen -> die direkt davor MUSS das Gegenstück sein. Falls nicht -> Ausgabe.
Falls es stimmt: Beide Klammern löschen, alles von vorn mit dem neuen String. Und das, bis keine Klammern mehr da sind, oder n Fehler auftaucht
 
Zuletzt bearbeitet:

2Crazy4Nick

Mitglied
Das Semester hat ja auch gerade erst angefangen :D
Nur irgendwie keine besonders pädagogische Methode
"Es gibt strings, es gibt if und while, jetzt macht ma hier".. in etwa so lief das x)

//edit: *sfz* Ich kriegs einfach nicht hin >x<
 
Zuletzt bearbeitet:

yoro

Neues Mitglied
Tja, da besuchen wir wohl dieselbe Uni mit derselben Vorlesung :D
Folgende Fehler, die ich bei dir fand:
1. Du kannst Strings nicht mit dem Operator == vergleichen. Das dürfte false ergeben!
Java:
str1.equals(klammer1)
Das ist die bessere Lösung. In der else-Anweisung schreibst du dann
Java:
str1.equalsIgnoreCase(klammer1)

2. nicht
Java:
str.length
sondern
Java:
str.length()

Grüße
und viel Erfolg noch ;)
 

2Crazy4Nick

Mitglied
Ich hab es inzwischen gelöst.. heute Nachmittag stell ich dann auch mal den QC rein, nach der Abgabefrist versteht sich.
Mich würde natürlich schon interessieren, ob wir tatsächlich auf die gleiche Uni gehen.
In meinem Fall wäre das Marburg, kann ich ja frei raus sagen :D

Gute Nacht erstmal ^^
 

yoro

Neues Mitglied
Ja, bei mir ist es auch die Uni Marburg :D Der Quellcode wurde von dir ja 1zu1 übernommen ;)
Ich stimme dir aber zu: Die Aufgabe war zu schwer für Anfänger_innen. In meiner Gruppe konnte das niemand außer mir. Ich habe aber schon etwas Erfahrung ;)

Eine gute Nacht wird es aber nicht. Ich muss den Quellcode nämlich ausreichend kommentieren für meine Übungsgruppe :D
 
M

Marcinek

Gast
Also wenn das zählen von offenen und geschlossenen Klammern an einer UNI für Probleme sorgt, welche Aufgaben soll man dann erwachsenen Menschen geben?

---

Aber zumindest sollte man nicht nach dem ersten hinsehen sagen: Kann ich nicht. Will ich nicht mag ich nicht ^^

Und wie man sieht: Mit einer gesunden Portion Selbständigkeit und Mitarbeit wird hier bei den schweren Aufgaben geholfen ;D
 

2Crazy4Nick

Mitglied
Es gibt in der Hinsicht Probleme, dass uns zu dem Zeitpunkt noch nicht mal erklärt wurde, was Methoden, Klassen, Strings, etc. sind.

Nun gut, mein QC:

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Wohlgeformt {
	
	// Ueberprueft den gegebenen String auf Wohlgeformtheit
	static void check (String str) {
		boolean stringIsClosingClamp = false;  	// Lässt die Suchschleife nach einer geschlossenen Klammer weiterlaufen, wird true gesetzt, wenn geschlossene Klammer gefunden und beendet die Schleife.
		char ClosingClampRound = ')';		   
		char ClosingClampCurved = '}';
		char ClosingClampBoxed = ']';			// Definitionen für die geschlossenen Klammern
		
		int i = str.length();						// Variablendeklaration der gesamten Stringlänge des Klammernausdrucks
		int x = 0;									// "Leseposition"
		
		if (i == 0) {System.out.println("Na, Klammern sollten sie schon eingeben!");
		return;}
		if (i % 2 == 1) {System.out.println("Der Ausdruck kann nicht wohlgeformt sein, da die Zahl der Klammern ungerade ist!");
		return;}
		while (x < i && stringIsClosingClamp == false) {		// Während der Index x der zu untersuchenden Klammer kleiner i, also der gesamten Stringlänge ist und noch keine geschlossene Klammer gefunden wurde, tue...
	
		if (str.charAt(x) == ClosingClampRound || str.charAt(x) == ClosingClampCurved || str.charAt(x) == ClosingClampBoxed)// Wenn die untersuchte Klammer ")","}" oder "]" ist, setze stringIsClosingClamp auf true
			{stringIsClosingClamp = true;}
			else x = x+1;										// Wenn keine schließende Klammer kam, wechsle zur nächsten Stelle im String und Probiere von vorn
		
		
		char OpeningClampRound = '(';		// Deklaration weiterer Klammern
		char OpeningClampCurved = '{';
		char OpeningClampBoxed = '[';
		
		if (stringIsClosingClamp == true){						// Wenn eine Geschlossene Klammer kam, überprüfe, welche und prüfe, ob die dazu passende Klammer davor steht => Wenn ja entferne die beiden Klammern, setze x zurück und stringIsClosedClamp auf falsch, um die nächsten Klammern zu prüfen
			if (str.charAt(x) == ClosingClampRound){	
				if (str.charAt(x-1) == OpeningClampRound){
					str = removeCharAt(removeCharAt(str, x-1), x-1);	// entferne x-1 und das neue x-1 aus dem Substring, das vorher an der Stelle x war. Das ganze wird als neuer String definiert
					{stringIsClosingClamp = false;}						// Variable zurücksetzen und so while-schleife von vorn beginnen
					{x = 0;}											// x auf 0 setzen, damit von vorn gelesen wird
					{i = i-2;}											// i=i-2 setzen, da sich die Stringlänge um 2 verkleinert hat
				}	
					else {System.out.println("Der Ausdruck ist nicht wohlgeformt!");	// Falls die davor stehende Klammer nicht passt, ist der Ausdruck nicht wohlgeformt
					return;}															// verlasse die Funktion
				
			}	
			else if (str.charAt(x) == ClosingClampCurved){		// Überprüfe die andere Klammersorte
				if (str.charAt(x-1) == OpeningClampCurved){
					str = removeCharAt(removeCharAt(str, x-1), x-1);
					{stringIsClosingClamp = false;}
					{x = 0;}
					{i = i-2;}
				}	
					else {System.out.println("Der Ausdruck ist nicht wohlgeformt!");
					return;}
				
			}
			else if (str.charAt(x) == ClosingClampBoxed){		// Auch die 3. Klammersorte wird geprüft
				if (str.charAt(x-1) == OpeningClampBoxed){
					str = removeCharAt(removeCharAt(str, x-1), x-1);
					{stringIsClosingClamp = false;}
					{x = 0;}
					{i = i-2;}
				}	
					else {System.out.println("Der Ausdruck ist nicht wohlgeformt!");
					return;}
				
			}	
		
		}
	}
	System.out.println("Der Ausdruck ist wohlgeformt!"); 		// Ans Ende der Funktion gelangt man nur, wenn vorher kein Fehler auftrat => Wohlgeformtheit
		}
	public static String removeCharAt(String s, int pos) { 	// Entferne den Char an der Stelle "pos" und gebe den substring aus
   return s.substring(0,pos)+s.substring(pos+1); 
} 

	public static void main(String[] args) {
		// Konsoleneingabe vorbereiten
		// (die Tastatureingabe wird gelesen und in gepufferter Form gesichert)
		BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("Bitte geben Sie einen Klammerausdruck ein:");
		// Zum Lesen der Eingabe muss eine Ausnahmebehandlung (Exception) eingefuegt werden,
		// da waehrend des Einlesens unerwartete Fehler auftreten koennten
		try {
			// der gelesene Klammerausdruck wird an die Methode check uebergeben
			// wo er auf Wohlgeformtheit ueberprueft wird
			check(input.readLine());
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
}

Ja ich weiß, Syntaxmäßig sieht da nich alles so einwandfrei aus, aber es funktioniert :D

Von daher, viel Spaß alles mit Java *hust*
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Cannot find Symbol Java Basics - Anfänger-Themen 5
A Cannot find symbol mit Konstruktoren Java Basics - Anfänger-Themen 27
A Cannot find symbol bei exceptions Java Basics - Anfänger-Themen 2
L cannot find symbol variable Kon Java Basics - Anfänger-Themen 8
F Erste Schritte error: cannot find symbol Java Basics - Anfänger-Themen 5
R return: cannot find symbol Java Basics - Anfänger-Themen 2
L Bluej Error: Cannot find Symbol Java Basics - Anfänger-Themen 13
S Cannot find symbol (symbol ist eine Variable) Java Basics - Anfänger-Themen 13
N Cannot find symbol Java Basics - Anfänger-Themen 18
P Cannot find symbol, wieso? Java Basics - Anfänger-Themen 5
M Erste Schritte cannot find symbol - Probleme mit Klassen Java Basics - Anfänger-Themen 6
J Error: cannot find symbol - variable Java Basics - Anfänger-Themen 3
F Erste Schritte parseint: cannot find symbol Java Basics - Anfänger-Themen 6
M Vererbung - Cannot Find Symbol constructor... Java Basics - Anfänger-Themen 11
D error: cannot find symbol Java Basics - Anfänger-Themen 3
B Frage zu Beispielprogramm: "error: cannot find symbol" Java Basics - Anfänger-Themen 2
BlueMountain Erste Schritte error: cannot find symbol Java Basics - Anfänger-Themen 2
L Error: Cannot find symbol Java Basics - Anfänger-Themen 1
P Cannot find Symbol Java Basics - Anfänger-Themen 3
L Cannot Find Symbol - Was soll denn das bedeuten?!? Java Basics - Anfänger-Themen 7
P StdIn.readDouble: cannot find symbol Java Basics - Anfänger-Themen 7
B Fehler "Cannot find symbol - variable number1" Java Basics - Anfänger-Themen 13
B Compiler-Fehler cannot find symbol Java Basics - Anfänger-Themen 6
K Cannot find symbol Java Basics - Anfänger-Themen 3
H cannot find symbol Java Basics - Anfänger-Themen 4
S cannot find symbol, symbol: constructor Java Basics - Anfänger-Themen 2
3 Compiler-Fehler Fehlerbehebung cannot find Symbol Java Basics - Anfänger-Themen 4
R Compiler-Fehler Cannot find symbol (Method printIn) Java Basics - Anfänger-Themen 3
B Polymorphie A obj = new B; "cannot find symbol app()" Java Basics - Anfänger-Themen 5
S wieso Fehlermeldung cannot find symbol hier Java Basics - Anfänger-Themen 10
T Cannot find Symbol(String) Java Basics - Anfänger-Themen 9
B Erste Schritte cannot find symbol - problem Java Basics - Anfänger-Themen 9
D Cannot find symbol variable Java Basics - Anfänger-Themen 9
A Compiler-Fehler Cannot find Symbol Java Basics - Anfänger-Themen 6
V Packages: Cannot find symbol Java Basics - Anfänger-Themen 12
J Cannot find Symbol Variable mit JPanels Java Basics - Anfänger-Themen 2
L Fehlermeldung: RealMirror.java cannot find symbol Java Basics - Anfänger-Themen 2
D Cannot Find Symbol Java Basics - Anfänger-Themen 6
M Compile Time Error - cannot find symbol (Objekt!) Java Basics - Anfänger-Themen 2
L Problem mit Vererbung (extends) cannot find symbol Java Basics - Anfänger-Themen 3
S Problem beim Kompilieren - cannot find symbol - constructor() Java Basics - Anfänger-Themen 12
N cannot find symbol URL Java Basics - Anfänger-Themen 2
S Problem mit Javaeditor: Cannot find Symbol Java Basics - Anfänger-Themen 13
P cannot find Symbol - WTF? Java Basics - Anfänger-Themen 4
StupidAttack cannot find symbol Java Basics - Anfänger-Themen 16
B Cannot find symbol-Fehler Java Basics - Anfänger-Themen 3
Luk10 Cannot find Symbol Daten Java Basics - Anfänger-Themen 10
E cannot find symbol??? Java Basics - Anfänger-Themen 8
B cannot find symbol Java Basics - Anfänger-Themen 11
N cannot find symbol Java Basics - Anfänger-Themen 11
T OOP cannot find symbol Java Basics - Anfänger-Themen 4
A cannot find symbol - symbol : method Java Basics - Anfänger-Themen 5
T cannot find symbol Java Basics - Anfänger-Themen 5
I Cannot find Symbol & NullPointerException Java Basics - Anfänger-Themen 8
A cannot find symbol. Java Basics - Anfänger-Themen 5
G cannot find symbol! Java Basics - Anfänger-Themen 22
K Ständige Fehlermeldung "Cannot find symbol" Java Basics - Anfänger-Themen 2
L cannot find symbol-method Java Basics - Anfänger-Themen 3
P Error: Cannot find Symbol Java Basics - Anfänger-Themen 4
J JOptionDialog "cannot find symbol" Java Basics - Anfänger-Themen 3
P JLayer 1.0 - cannot find symbol Java Basics - Anfänger-Themen 4
M cannot find symbol. Java Basics - Anfänger-Themen 7
T ChangeListener cannot find Symbol? Java Basics - Anfänger-Themen 2
D "identifier expected" und "cannot find symbol Java Basics - Anfänger-Themen 4
B cannot find symbol method equalsIgnoreCase? Java Basics - Anfänger-Themen 23
S Fehlermeldung cannot find symbol Java Basics - Anfänger-Themen 8
G Cannot find symbol, Suchfunktion benutzt Java Basics - Anfänger-Themen 3
A cannot find symbol :-( Java Basics - Anfänger-Themen 2
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
G Collections.binarySearch(LinkedList): cannot find method Java Basics - Anfänger-Themen 6
R Cannot find a free socket for the debugger Java Basics - Anfänger-Themen 6
W Cannot find symbole variable Java Basics - Anfänger-Themen 4
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
W Cannot resolve symbol 'HttpServlet' Java Basics - Anfänger-Themen 2
I JSON - cannot deserialize from Object value Java Basics - Anfänger-Themen 16
J Scanner cannot be resolved to a type Java Basics - Anfänger-Themen 3
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
jakobfritzz Array- cannot invoke "" because "" is null Java Basics - Anfänger-Themen 4
Flo :3 Variablen Type dismatch: cannot convert from string to int Java Basics - Anfänger-Themen 9
C system cannot be resolved Fehler in Eclipse Java Basics - Anfänger-Themen 18
V ClientProtocolException cannot be resolved Java Basics - Anfänger-Themen 6
J The import org.bukkit cannot be resolved Java Basics - Anfänger-Themen 3
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
L constructor cannot be applied... Java Basics - Anfänger-Themen 22
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
P a cannot be resolved bei einer do while Schleife Java Basics - Anfänger-Themen 1
Aprendiendo Interpreter-Fehler "non-static variable this cannot be referenced from a static context" Java Basics - Anfänger-Themen 2
M Iterator cannot refer to a non final... Java Basics - Anfänger-Themen 20
T Error: int cannot be dereferenced Java Basics - Anfänger-Themen 10
J JLabel cannot be resolved Java Basics - Anfänger-Themen 8
H Variablen error: non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 4
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
B OOP next cannot be resolved or is not a field Java Basics - Anfänger-Themen 6
B OOP Cannot instantiate the type AuDList<Integer> Java Basics - Anfänger-Themen 18
U Erste Schritte cannot be referenced from a static context Java Basics - Anfänger-Themen 1
D Java Eclipse cannot be cast to java.awt.event.ItemListener Java Basics - Anfänger-Themen 3
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
M Erste Schritte [Variable] cannot be resolved to a variable Java Basics - Anfänger-Themen 4
M The Selection cannot be launched... Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben