Methode aufrufen funktioniert nicht ganz - Rückgabewert Bool

Status
Nicht offen für weitere Antworten.

David-Clp

Mitglied
Hallo alle zusammen,

ich habe hier ein kleines Java Programm, komme allerdings nicht weiter. Die meiner Meinung nach falschen Zeilen habe ich kommentiert.

Ich möchte gerne die Variable vom Typ boolean in die main reingeben und dort via if Schleife auswerten, das klappt aber nicht. Eclipse sagt folgendes:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
ergebnis cannot be resolved
ergebnis cannot be resolved
eingabe cannot be resolved
eingabe cannot be resolved

Kann mir jemand eventuell einen Tipp geben? Das wäre echt super nett...


Code:
public class Palindrom {
	
	public static boolean testen(String[] args){	//Hier eventuell ein Fehler?	
                                boolean ergebnis;
		String eingabe = "Otto"; 
		int i = 0;
		int laengemax = eingabe.length();
		int laengemin = laengemax / laengemax;
		
			
				for (i = 1; i <= eingabe.length(); i++){
					
					if(eingabe.charAt(laengemax) == eingabe.charAt(laengemin)){
					ergebnis = true;	
					}
					else 
						ergebnis = false;
					
					laengemax--;
					laengemin++;
		
				}
				
		return ergebnis;
	}
	
	
	public static void main(String[] args) {

		testen(ergebnis); //Hier eventuell ein Fehler?
		
		if (ergebnis = true){
			System.out.println("Das Wort"+eingabe+" ist ein Palindrom");
		}
		else
			System.out.println("Das Wort"+eingabe+" ist kein Palindrom");

	}

}
 
D

Dadvid-CLP

Gast
Danke für die Antwort,

allerdings habe ich doch folgendes stehen:

Code:
boolean ergebnis;

ist etwas eingerückt oben in der Methode testen, vielleicht hast du das übersehen?
 
S

SlaterB

Gast
in der main fehlt sie,

falsch:
testen(ergebnis);

richtig:
boolean ergebnis = testen(null);

(Parameter String[] args wird nicht genutzt?)
 
D

Dadvid-CLP

Gast
Danke für die vielen tollen Antworten bisher, aber auch jetzt erscheint immer noch folgendes:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The local variable ergebnis may not have been initialized
 

Ariol

Top Contributor
Code:
public class Palindrom {
   
   boolean ergebnis = false; <-- muss ausserhalb der Methode stehen, wenn mehrere Methoden darauf zugreifen sollen

   public static boolean testen(String eingbabe){   //Die Eingabe als Parameter mitliefern
                                
      //int i = 0; <--kann man direkt in der Schleife initialisieren - Java != C
      int laengemax = eingabe.length();
      int laengemin = 1;
      //int laengemin = laengemax / laengemax;<--Warum so Seltsam??
      
         
            for (int i = 1; i <= eingabe.length(); i++){
               
               //So klappt deine Abfrage nicht wirklich! Versuchs mal mitt dem Wort ruhr
               //Da wird als letzes r mit r verglichen und somit true ausgegeben
               //Außerdem ist 'O' != 'o'

               if(eingabe.charAt(laengemax) == eingabe.charAt(laengemin)){
               ergebnis = true;   
               }
               else
                  ergebnis = false;
               
               laengemax--;
               laengemin++;
      
            }
            
      return ergebnis;
   }
   
   
   public static void main(String[] args) {

       String eingabe = "Otto";
      
      if (testen(eingabe)){
         System.out.println("Das Wort"+eingabe+" ist ein Palindrom");
      }
      else
         System.out.println("Das Wort"+eingabe+" ist kein Palindrom");

   }

}
 

Marcel_Handball

Bekanntes Mitglied
Code:
public class Palindrom {
   
   public static boolean testen(String eingabe){ 
      boolean ergebnis=true;
      int laengemax = eingabe.length()-1;
      int laengemin = 0;
      
      for (int i=0; i < eingabe.length()/2; i++){
    	  
          if(eingabe.charAt(laengemax) == eingabe.charAt(laengemin)){
          ergebnis = true;   
          }
          else
             return false;
          
          laengemax--;
          laengemin++;
 
       }
            
      return ergebnis;
   }
   
   
   public static void main(String[] args) {
	   String eingabe="oottoo".toLowerCase();
	   boolean ergebnis = testen(eingabe);
      
      if (ergebnis){
         System.out.println("Das Wort "+eingabe+" ist ein Palindrom");
      }
      else
         System.out.println("Das Wort "+eingabe+" ist kein Palindrom");
   }

}
 

David-Clp

Mitglied
Danke Ariol, deine Ausführungen fand ich sehr gelungen und bin jetzt ein Stückchen weiter. Allerdings funktioniert als einziges immer noch nicht, dass ich Ergebnis übergeordnet definiere, es erscheint folgende Fehlermeldung:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Cannot make a static reference to the non-static field ergebnis

Code:
boolean ergebnis = false; <-- muss ausserhalb der Methode stehen, wenn mehrere Methoden darauf zugreifen sollen

funktioniert daher nicht. Hast du oder jemand anderes einen kleinen Tipp? Handballs Lösung geht mir schon ein wenig zu weit, ich wollte es schon gerne selber machen mit meinem Wissen, aber ich bekomme ja leider keine Ausgabe hin...
 

Leroy42

Top Contributor
Bevor ich dir jetzt sage daß du die Variable static machen mußt
und damit deinen falschen Weg noch unterstütze, habe ich das
Programm mal neu geschrieben, so daß es mit einer Klasse realisiert wird.

Code:
public class Palindrom {
	boolean isPalindrom(String eingabe) {
	      boolean ergebnis=true; 
	      int laengemax = eingabe.length()-1; 
	      int laengemin = 0; 
	      
	      for (int i=0; i < eingabe.length()/2; i++){ 
	          if(eingabe.charAt(laengemax) != eingabe.charAt(laengemin)) 
	             return false; 
	          laengemax--; 
	          laengemin++; 
	       } 
	      return ergebnis; 
	}
	public static void main(String[] args) {
		Palindrom pali = new Palindrom();
		String wort;
		
		wort = "oottoo";
		System.out.printf("Das Wort %s ist %sein Palindrom%n", wort, pali.isPalindrom(wort) ? "" : "k");
		
		wort = "ootto";
		System.out.printf("Das Wort %s ist %sein Palindrom%n", wort, pali.isPalindrom(wort) ? "" : "k");
	}

}

Deine testen(isPalindrom) - Methode funktionierte auf Anhieb. :D :applaus:
 

David-Clp

Mitglied
Ich habe nun einfach mal weiter probiert, leider brachten mir die meisten Antworten hier nicht sehr viel, da einfach Befehle verwendet wurden, die ich bis dato nicht kannte, bzw. nicht kenne und nicht verwenden darf. Es ist mir einfach nur wichtig, wenn jemand sagen könnte, wo der Fehler stecken könnte, auch wenn die Methode so nicht funktionieren sollte, würde ich gerne erstmal wissen, das außer der Methode alles falsch ist, denn das ausbessern der Methode kann ich erst dann machen wenn ich überhaupt eine Ausgabe bekomme. Vielen Dank...

Code:
package Programmieren;

public class Palindrom {
	
	public static void main(String[] args) {		
		
		String eingabe = "Otto"; // Eingabe = Otto, daher müsste es als Palindrom erkannt werden
		
		boolean ergebnis = testen(eingabe); // Der Wert wahr oder falsch der Methode testen wird in ergebnis abgespeichert
		
		if (ergebnis = true){ // Wenn das Ergebnis wahr ist, gebe aus, dass:
			System.out.println("Das Wort ist ein Palindrom!");
		}
		else // Wenn das Ergebnis falsch ist, gebe aus, dass:
			System.out.println("Das Wort ist kein Palindrom!");

	}
	
	public static boolean testen(String eingabe){
		
		int i = 0;
		int laengemax = eingabe.length();
		int laengemin = laengemax / laengemax;
		
				for (i = 1; i <= eingabe.length(); i++){ // Solange wiederholen, bis i = Wortlänge ist 
					
					if(eingabe.charAt(laengemax) == eingabe.charAt(laengemin)){ // Wenn Letzter Buchstabe = Erster Buchstabe dann führe aus
						
					return true;	// Gebe an Klasse ein wahr zurück
					
					laengemax--; // Längemax - 1 = Zweitletzter, Drittlertzter, Viertletzer Buchstabe usw.
					laengemin++; // Längemin + 1 = Erster, Zweiter, Dritter, Vierter Buchstabe usw. 
					
					}
					else // Wenn Buchstaben nicht gleich sind, dann führe folgendes aus
						return false; // Gebe an Klasse ein falsch zurück
		
				}
	}

}

Eclipse sagt:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
This method must return a result of type boolean
Unreachable code

at Programmieren.Palindrom.testen(Palindrom.java:27)
at Programmieren.Palindrom.main(Palindrom.java:17)

------------------------------------------------------------------------------------------------------------------
 
S

SlaterB

Gast
der Operation fehlt ein Rückgabewert,
wenn eingabe.length() 0 ist wird die Schleife nicht durchlaufen
und du sagst nicht, was zurückgegeben werde soll, wenn die Schleife nicht durchlaufen wird,
das ist ein inkonsistentes Programm,

schreibe
return false;
ans Ende der Operation
 

David-Clp

Mitglied
Hallo Slater, aber das beuge ich doch vor, indem ich den String als "Otto" vordefiniere... Da muss er ja die Schleife durchlaufen.
 
S

SlaterB

Gast
quatsch, das ist eine allgemeine (sogar statische) Operation, die kann von jedermann überall aufgerufen werden,
der Compiler schaut doch nicht alle diese Stellen an ;)

schon erstaunlich genug, dass der Compiler das mit der for-Schleife untersucht aber selbst eine Unterscheidung
Code:
if (length == 0) {
  return ..
} else {
  for (length) {
   if return
   else return
  }  
}
dürfte nicht zu durchschauen sein obwohl narrensicher
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
D Einen boolischen Wert aus einer Methode in einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 11
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
G Rekursive Methode mit 2 Aufrufen Java Basics - Anfänger-Themen 1
T getAttribut in einer Methode aufrufen Java Basics - Anfänger-Themen 8
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
F Methoden Methode richtig aufrufen Java Basics - Anfänger-Themen 3
V Collections Methode in der Methode aufrufen Java Basics - Anfänger-Themen 2
S Methode von vererbter Klasse, statt die der "Mutterklasse" aufrufen Java Basics - Anfänger-Themen 28
M Klassen Methode in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
M Methode in anderer Klasse aufrufen Java Basics - Anfänger-Themen 5
E Methode soll andere Methode der selben Klasse aufrufen Java Basics - Anfänger-Themen 28
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
scratchy1 Kann man in einer Methode eine andere aufrufen? Java Basics - Anfänger-Themen 2
W Wie kann ich meine Methode aufrufen? Java Basics - Anfänger-Themen 29
scratchy1 Methode aufrufen Java Basics - Anfänger-Themen 59
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
D Compiler-Fehler Aufrufen einer Methode von Main Java Basics - Anfänger-Themen 4
C Methoden Methode Variabel aufrufen Java Basics - Anfänger-Themen 2
E Threads Methode einer Wartenden Klasse aufrufen Java Basics - Anfänger-Themen 3
J Methoden Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 12
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
F Methode anderer Klasse aufrufen Java Basics - Anfänger-Themen 1
A Methode aufrufen in main-Methode Java Basics - Anfänger-Themen 5
K Compiler-Fehler Objektmethode aus einer statischen Methode heraus aufrufen Java Basics - Anfänger-Themen 34
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
W Methoden Methode ohne Parameter auf Instanz eines Objekts aufrufen? Java Basics - Anfänger-Themen 14
S Methoden Methode einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 5
Ghostman1711 Pi berechnung Methode aufrufen Java Basics - Anfänger-Themen 2
W Methoden Methode auf Array aufrufen, und dieses Array dabei ändern? Java Basics - Anfänger-Themen 10
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
J Methode in main-Methode aufrufen Java Basics - Anfänger-Themen 5
M Klassen Main Methode in einer anderen Klasse aufrufen Java Basics - Anfänger-Themen 13
G Methode einer Abstrakten Klasse aufrufen Java Basics - Anfänger-Themen 1
Q Methode eines bereits erzeugten Objekts von einem anderen Objekt aus aufrufen Java Basics - Anfänger-Themen 6
C Array - Methode in einer anderen Aufrufen Java Basics - Anfänger-Themen 1
F Um 14:00 eine Methode aufrufen Java Basics - Anfänger-Themen 5
B Methoden Array Methode aufrufen Java Basics - Anfänger-Themen 4
O Klasse übergeben und Methode aufrufen Java Basics - Anfänger-Themen 6
B Java Programm ohne statische Main Methode aufrufen Java Basics - Anfänger-Themen 5
M Dynamische Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 11
T [Erledigt] Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 0
M Warum soll man die Finanlize Methode nicht überschreiben und aufrufen? Java Basics - Anfänger-Themen 2
P Methoden Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 4
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
D Methode mit mehren Rekursiven aufrufen in Methode mit einem Rekursiven Aufruf umwandeln! Java Basics - Anfänger-Themen 1
Mr. Pink Graphics2D in anderer Methode aufrufen Java Basics - Anfänger-Themen 6
P Methode außerhalb der Klasse aufrufen Java Basics - Anfänger-Themen 10
J Methode vor Ausführung einer vorhandenen Methode aufrufen Java Basics - Anfänger-Themen 5
M Methode aus einer Klasse aufrufen Java Basics - Anfänger-Themen 6
J Vererbung Überschriebene toString-Methode aufrufen Java Basics - Anfänger-Themen 10
A Nicht-statische Methode in einer statischen aufrufen Java Basics - Anfänger-Themen 10
A Methode aus verschiedenen Klassen aufrufen Java Basics - Anfänger-Themen 8
N Methode draw(Graphics g) aufrufen Java Basics - Anfänger-Themen 6
V Mit JS eine JAVA Methode aufrufen Java Basics - Anfänger-Themen 5
U Objekte in Array erstellen und Methode in verschiedenen klassen aufrufen Java Basics - Anfänger-Themen 5
L Methoden Eine Methode aus einer anderen Klasse aufrufen Java Basics - Anfänger-Themen 4
M Methode einer anderen Klasse aufrufen Java Basics - Anfänger-Themen 7
N Aufrufen einer Methode mit unterschiedlichen Basistypen Java Basics - Anfänger-Themen 22
D Methoden Methode über andere Klasse aufrufen Java Basics - Anfänger-Themen 7
B Methoden Methode lässt sich nicht selbst aufrufen? Java Basics - Anfänger-Themen 3
O OOP prindata Methode aufrufen!? Methode drucken + Konstruktor Java Basics - Anfänger-Themen 9
E Methoden Variable aus einer anderen Methode in einer Methode aufrufen Java Basics - Anfänger-Themen 7
H Methode aufrufen beim Drücken eines Buttons im Boxlayout Java Basics - Anfänger-Themen 6
A paint() methode von externer Klasse aufrufen Java Basics - Anfänger-Themen 3
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
M Methoden Methode als String übergeben, dann aufrufen? Java Basics - Anfänger-Themen 13
I Methode enes Objektes A in Objekt B aufrufen Java Basics - Anfänger-Themen 4
H Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 7
M OOP ActionPerformed Methode aus anderer AP aufrufen? Java Basics - Anfänger-Themen 5
M Main methode innerhalb von Java aufrufen Java Basics - Anfänger-Themen 11
D Methode anhand deren Name aufrufen Java Basics - Anfänger-Themen 4
D Methode in Schwesterklasse aufrufen Java Basics - Anfänger-Themen 12
H Methode aufrufen Java Basics - Anfänger-Themen 5
Luk10 aufrufen einer Methode Java Basics - Anfänger-Themen 9
L Methode über for-schleife aufrufen und verändern Java Basics - Anfänger-Themen 7
L Methode über for-schleife aufrufen und verändern Java Basics - Anfänger-Themen 5
H Methode aus anderer Datei aufrufen Java Basics - Anfänger-Themen 11
N methode im Konstruktor aufrufen Java Basics - Anfänger-Themen 4
TheKing Paint-Methode aufrufen Java Basics - Anfänger-Themen 14
B Eine Methode für alle Subklassen aufrufen? Java Basics - Anfänger-Themen 8
Shaun Methode der Klasse 1 in Klasse 2 aufrufen Java Basics - Anfänger-Themen 2
B Methode aufrufen 2Dim Array Java Basics - Anfänger-Themen 3
T Methode einer fremden Klasse aufrufen - wie? Java Basics - Anfänger-Themen 2
D Methode in einer anderen Methode (gleiche Klassse) aufrufen Java Basics - Anfänger-Themen 11
K methode aufrufen Java Basics - Anfänger-Themen 8
T Aufrufen von get-Methode aus anderer Klasse (absolute Anfängerfrage) Java Basics - Anfänger-Themen 2
S Klasse übergeben und Methode aufrufen? Java Basics - Anfänger-Themen 2
E Mit Taste Methode aufrufen Java Basics - Anfänger-Themen 7
Z Verdeckte Methode aufrufen Java Basics - Anfänger-Themen 7
D Variable einer Methode in anderer Methode aufrufen Java Basics - Anfänger-Themen 19

Ähnliche Java Themen

Neue Themen


Oben