matheraum.de
Raum für Mathematik
Offene Informations- und Nachhilfegemeinschaft

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Hochschulmathe
  Status Uni-Analysis
    Status Reelle Analysis
    Status UKomplx
    Status Uni-Kompl. Analysis
    Status Differentialgl.
    Status Maß/Integrat-Theorie
    Status Funktionalanalysis
    Status Transformationen
    Status UAnaSon
  Status Uni-Lin. Algebra
    Status Abbildungen
    Status ULinAGS
    Status Matrizen
    Status Determinanten
    Status Eigenwerte
    Status Skalarprodukte
    Status Moduln/Vektorraum
    Status Sonstiges
  Status Algebra+Zahlentheo.
    Status Algebra
    Status Zahlentheorie
  Status Diskrete Mathematik
    Status Diskrete Optimierung
    Status Graphentheorie
    Status Operations Research
    Status Relationen
  Status Fachdidaktik
  Status Finanz+Versicherung
    Status Uni-Finanzmathematik
    Status Uni-Versicherungsmat
  Status Logik+Mengenlehre
    Status Logik
    Status Mengenlehre
  Status Numerik
    Status Lin. Gleich.-systeme
    Status Nichtlineare Gleich.
    Status Interpol.+Approx.
    Status Integr.+Differenz.
    Status Eigenwertprobleme
    Status DGL
  Status Uni-Stochastik
    Status Kombinatorik
    Status math. Statistik
    Status Statistik (Anwend.)
    Status stoch. Analysis
    Status stoch. Prozesse
    Status Wahrscheinlichkeitstheorie
  Status Topologie+Geometrie
  Status Uni-Sonstiges

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
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenJavaJAVA
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Philosophie • Religion • Kunst • Musik • Sport • Pädagogik
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.unimatheforum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]