Zahlenrätsel

JavaAnfänger1235

Bekanntes Mitglied
Hallo, ich habe folgende Aufgabe:
Allgemein gilt für eine arithmetische Folge: a_i = a_0 + i ∗ d. In dieser Aufgabe soll eine (statische) Methode loese geschrieben werden, die ein Zahlenfolgen Rätsel löst, falls sie vom Typ ” arithmetische Folge“ sind. Die Methode soll ein Array von int-Werten als Parameter bekommen. Sie soll aus den ersten beiden Array-Elementen die Differenz bestimmen, und dann für alle übrigen Array-Elemente prüfen, ob sie wirklich nach obiger Formel berechnet werden können. Falls das für alle Array-Elemente der Fall ist, soll das nächste Element der Folge mit System.out.println(...) ausgegeben werden . Falls mindestens ein Array-Element nicht obiger Formel entspricht, soll der Text “Ich weiss nicht.” ausgegeben werden. Die Methode soll keinen Rückgabewert haben.

Hier meine Lösung:
Java:
    public static void loese(int [] folge) {
        int d=folge[1]-folge[0];
        for(int i=2; i<folge.length; i++) {
            if((folge[i])==(folge[0] + i*d)) {
                System.out.println(folge[0] + d*(folge.length));
            }
               
                else
                    System.out.println("Weis nicht");
           
        }
       
           
       
    }

Die Frage ist, was folgendes noch bedeuten soll:
" falls sie vom Typ ” arithmetische Folge“
Muss ich das noch irgendwie einbauen?
 

YOES1805

Mitglied
İch meine das soll einfach nur heißen, das die erste bedingung erfüllt wird. Und wenn nicht ist es ja auch keine Arithmetische folge mehr.
 

YOES1805

Mitglied
Ist so richtig wie ich auf dem ersten Blick sehe. Könntest eventuell die klammern um folge in der if bedingung weg machen und auch die klammer von folge.length in der ausgabe, aber das ist jetz auch nicht wirklich eine Verbesserung.

Villeicht könntest du ja vorher Kontrollieren ob erste element größer ist als das zweite, falls ja kann es ja keine Arithmetische folge sein, dann brauchst du auch die Schleife nicht zu durchlaufen.

Und nach der "Weis nichts" ausgabe musst du komplett abbrechen, damit die schleiufe nicht weiter macht wenn er erste wert schon nicht paasst.
 
Zuletzt bearbeitet:

JavaAnfänger1235

Bekanntes Mitglied

Und nach der "Weis nichts" ausgabe musst du komplett abbrechen, damit die schleife nicht weiter macht wenn er erste wert schon nicht passt.
Also meinst du dann nach
System.out.....;
break;

Villeicht könntest du ja vorher Kontrollieren ob erste element größer ist als das zweite, falls ja kann es ja keine Arithmetische folge sein, dann brauchst du auch die Schleife nicht zu durchlaufen.
Also sowas wie if( folge[1]<folge[0]) und dann auch break;
und weiter mit else if?
 

YOES1805

Mitglied
Das erste stimmt ein break. Das zweite aber nicht. Die If bedingung ist richtig. in die If bedingung einfach Weis Nicht und den Ganzen anderen rest, mit der schleife, in die darauf folgende else einfügen, natürlich auch die int d berechnung :)
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben