www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Java" - JAVA
JAVA < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

JAVA: String
Status: (Frage) beantwortet Status 
Datum: 10:28 Fr 18.02.2005
Autor: crux

Hallo,
hab ein Problem mit JAVA... soll eine statische Methode schreiben, mit Parameter des Typs String-Array und Rückgabewert boolean. boolean soll true sein, wenn an einer Stelle des Arrays drei aufeinander folgende Positionen den gleichen String-Inhalt haben.

Mein Lösungsansatz ist:
public static boolean DreiGleicheHintereinander(){
String[]s = {"t", "st", "st", "nm"};
for (int i=0; i<s.length-2;i++){
if (s[i].equals(s[i+1])){
if (s[i].equals(s[i+2]))
System.out.println("true");
return true;
}

}
System.out.println("false");
return false;
}

Bei den meisten Werten funktioniert der Code... aber wenn vor-vorletzes und vorletztes gleich sind, das letzte nicht, gibt es keine Ausgabe... weiß jemand warum? Es scheint in die erste if-schleife reinzugehen und dann abzubrechen... oder so ähnlich... ich hoffe ihr könnt mir helfen...schonmal danke

Ich habe diese Frage in keinem anderen Forum gepostet

        
Bezug
JAVA: genauere Schilderung des Probs
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:42 Fr 18.02.2005
Autor: crux

Sobald im String 2 gleiche Werte hintereinander kommen geht es in die erste if-Schleife und bei der 2. if ist es ja falsch- aber warum geht es dann nicht normal mit meiner for-Schleife weiter sondern beendet es? Danke

Bezug
                
Bezug
JAVA: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:58 Fr 18.02.2005
Autor: crux

habe eben festgestellt, dass ich bei der 2. if schleife die Klammern {} vergessen habe- aber das hinzutun der Klammern löst leider mein Problem nicht... weil es dann anscheinend nicht immer zu einem return befehl kommt... aber warum... wenn bei den if schleifen während der for schleife nie ein true kommt müsste es doch schliesslich zu dem false führen, nachdem die for schleife beendet ist...???

Bezug
        
Bezug
JAVA: Fehler in der if Schleife?!
Status: (Antwort) fertig Status 
Datum: 11:00 Fr 18.02.2005
Autor: marthasmith

das hier ist ja dein Programmtext:

public static boolean DreiGleicheHintereinander(){
String[]s = {"t", "st", "st", "nm"};
for (int i=0; i<s.length-2;i++){
    if (s[i].equals(s[i+1])){
         if (s[i].equals(s[i+2]))
die kommende Anweisung wird ausgeführt wenn true
                System.out.println("true");
die kommende Anweisung wird immer wenn das erste if true ist
ausgeführt. Die Funktion wird  am Ende der if - Schleife beendet, das soll wohl nicht so sein, eher soll wohl das true erstmal zwischengespeichert werden, bis du durch alle Indices durch bist?

         return true;
    }
}
System.out.println("false");
return false;
}

Bezug
                
Bezug
JAVA: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 11:10 Fr 18.02.2005
Autor: crux

Ja, das Problem ist, das es nach der 2. if Schleife beendet- aber eigentlich ist da ja noch nicht meine for-Schleife zu Ende.,.. warum wird es dann trotzdem beendet? Zunächst war das primäre Problem das Vergessen der Klammer{} aber das hinzufügen hat dazu geführt das nicht immer ein return befehl ausgeführt wird was ich nicht verstehe... wenn die for schleife unerfolgreich (die if-schleifen ergeben nicht true) ausgeführt worden ist, müsste es doch einfach den false wert zurückgeben?!
warum führt es die for schleife nicht weiter aus, nach der 2. if schleife(also wenn die bedingung nicht erfüllt ist)?


Bezug
                        
Bezug
JAVA: Antwort
Status: (Antwort) fertig Status 
Datum: 11:37 Fr 18.02.2005
Autor: Marc


> Ja, das Problem ist, das es nach der 2. if Schleife
> beendet- aber eigentlich ist da ja noch nicht meine
> for-Schleife zu Ende.,.. warum wird es dann trotzdem
> beendet? Zunächst war das primäre Problem das Vergessen der
> Klammer{} aber das hinzufügen hat dazu geführt das nicht
> immer ein return befehl ausgeführt wird was ich nicht
> verstehe... wenn die for schleife unerfolgreich (die
> if-schleifen ergeben nicht true) ausgeführt worden ist,
> müsste es doch einfach den false wert zurückgeben?!
>  warum führt es die for schleife nicht weiter aus, nach der
> 2. if schleife(also wenn die bedingung nicht erfüllt
> ist)?


Dein Programm:
1: public static boolean DreiGleicheHintereinander(){
2:    String[]s = {"t", "st", "st", "nm"};
3:    for (int i=0; i<s.length-2;i++){
4:       if (s[i].equals(s[i+1])){
5:          if (s[i].equals(s[i+2]))
6:             System.out.println("true");
7:          return true;
8:
9:       }
10:    }
11:    System.out.println("false");
12:    return false;
13: }


verbessertes Programm:

1: public static boolean DreiGleicheHintereinander(){
2:    String[]s = {"t", "st", "st", "nm"};
3:    for (int i=0; i<s.length-2;i++){
4:       if (s[i].equals(s[i+1])){
5:          if (s[i].equals(s[i+2])){
6:             System.out.println("true");
7:             return true;
8:          }
9:       }
10:    }
11:    System.out.println("false");
12:    return false;
13: }


Hier habe ich --wie von marthasmith vorgeschlagen-- ein Klammerpaar in Zeile 5 und 8 eingefügt.

Das bewirkt nun, dass die Anweisung in Zeile 7 nur ausgeführt wird, wenn auch die innerste IF-Abfrage erfüllt ist.
Vorher wurde sie nämlich auch ausgeführt, egal ob die innerste IF-Abfrage erfüllt war oder nicht.

Dies ein typischer Fehler (nicht nur bei Java): Nach einer IF-Abfrage wird exakt eine Anweisung oder exakt ein Anweisungsblock ausgeführt. Im ersten Programm war dies nur die Zeile 6, im zweiten Programm sind dies aber (durch die Klammersetzung) die Zeilen 6 und 7.

Viele Grüße,
Marc


Bezug
                                
Bezug
JAVA: DANKE
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:45 Fr 18.02.2005
Autor: crux

Danke für eure Hilfe- oh man, was so bisschen Klammer immer alles bewirkt ;) jetzt läuft das Ding.

Bezug
                
Bezug
JAVA: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:11 Fr 18.02.2005
Autor: marthasmith

da ich Java nicht kann :o)
hier einfach ein Pseudocode:

j = 0;

for(i = 0 to i = length(s1-2))
{
     if (s1[i] == s2[i] and s1[i] == s2[i+1] and s1[i] == s2[i+2])
             index[j++] = i;
}
if( j > 0)
return true;
else
  return false;


du hast dann am Ende ein array in dem die Indizes von s1 stehen,
so dass die nächsten beiden Zeichen mit denen aus s2 identisch sind.#

Die Vergleiche musst du jetzt quasi nur noch mit Java Code machen.


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Java"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorhilfe.de