verschiedene Reihenfolgen ausgeben

nbng

Mitglied
moin!

erster post, habe mir die regeln durchgelesen und hier ein bisschen geschaut (und gegooglet). das problem ist, dass ich nicht so recht weiß, was ich googlen soll.. ich vermute die lösung(en) sind super easy, jedoch stehe ich auf dem altbekannten schlauch.

folgendes soll in bluej mit schleifen gelöst werden (arrays hatten wir noch nicht):
es soll eine methode geschrieben werden, die nach den jeweiligen "regeln" die ersten 20 zahlen der reihenfolge ausgeben.
aufgabe 3: 53,58,54,59,55,60 ..
wäre dann ja also: 53,58,54,59,55,60,56,61,67,62,58,63,59,64,60,65,61,66,62

nun habe ich irgendwie versucht in einer for-schleife um 5 zu erhöhen und dann wiederum um 4 zu verringern - kriege ich aber einfach nicht hin.
also habe ich umgedacht und letztendlich sind es ja zwei reihen, die einfach um einen erhöht werden. da weiß ich aber nicht, wie das funktioniert, dass mir die konsole abwechselnd die reihen ausspuckt.

mein versuch ist irgendetwas in dieser form:

public void reihenfolgeAusgeben3()
{

for (int a=53; a<=62; a++)
{
System.out.println(a);
}
for (int b=58; b<=66; b++)
{
System.out.println(b);
}


ich hoffe, dass mir jemand einen anstoß geben kann!
ich danke euch.
 

nbng

Mitglied
okay wow. man muss etwas nur noch mal genau für einen forum post aufschreiben, dann kommt man selbst drauf. ich bin nicht darauf gekommen mehrere bedingungen in die schleife zu schreiben (und dass das geht).

public void reihenfolgeAusgeben3()
{

for (int a=53, b=58; a<=62 & b<=67; a++, b++)
{
System.out.println(a);
System.out.println(b);
}
}
 

httpdigest

Top Contributor
Diese Schleife finde ich noch ziemlich "obfuscated". Man kann nicht klar erkennen, wieviele Zahlen da eigentlich ausgegeben werden. Besser wäre vielleicht:
Java:
int N = 20;
for (int i = 0; i < N/2; i++) {
  System.out.println(53 + i);
  System.out.println(58 + i);
}
 
K

kneitzel

Gast
Ansonsten wäre eine andere Möglichkeit, dass man da von Zahl zu Zahl geht und die Regel ist immer abwechselnd +5 / -4 8 (Wie in dem Post erläutert).

Innerhalb der Schleife kann man dann schauen, was man machen muss, indem man zaehler%2 == 0 prüft.

Also wäre das dann sowas wie:
Java:
public class Reihe {

    public static void main(String[] args) {
        int ersterWert = 53;
        int modifierUngerade = 5;
        int modifierGerade = -4;
        int anzahlZahlen = 20;

        // Wir starten mit ersterWert-modifierGerade, da für den ersten Wert zuerst der modifierGerade angewendet wird.
        int wert = ersterWert - modifierGerade;
        for (int zaehler=0; zaehler < anzahlZahlen; zaehler++) {
            wert += zaehler % 2 == 0 ? modifierGerade : modifierUngerade;
            System.out.print(wert + " ");
        }
    }
}

Der Code scheint jetzt erst einmal komplexer als bei der anderen Lösung, bei der einfach immer zwei Werte gespeichert werden, aber das liegt unter anderem auch daran, dass die andere Lösung nur immer ein vielfaches von 2 Zahlen ausgeben kann.
Den Fall mit ungerader Anzahl würde den anderen Code auch etwas aufblähen (ein einfaches if nach der Schleife um dann ggf. noch einen weiteren Wert auszugeben.

Ich würde den Code wählen, der das eigene Verständnis am Besten trifft. Sieht man die Reihe als ein +5 / -4 an, dann wäre diese Version mein Favorit. Sieht man zwei Startzahlen und dann jeweils ein +1, dann wäre die andere Lösung mein Favorit.

Die +5/-4 Lösung war aber vom TE erwähnt, daher wollte ich diese auch einmal zeigen (wie ich diese so ohne viel Nachdenken implementieren würde).
 
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
Ach ja: Falls das mit dem Start mit wert=ersterWert - modifierGerade nicht einleuchtet: Man kann durchaus auch die Ausgabe vor die Wertveränderung nehmen. Und die Namensgebung muss man evtl. noch anpassen (modifierGerade / modifierUngerade) so dass es verständlicher ist. Ist halt die Veränderung, die man auf die n-te Zahl anwenden muss. Damit man nicht mit dem zaehler durcheinander kommt, sollte man den evtl. auch bei 1 starten lassen....

Das sind nur noch ein paar Gedanken, die mir nach dem Posten so gekommen sind. War halt ein Schnellschuss ohne alles zu genau zu durchdenken.
 

nbng

Mitglied
ich danke euch beiden!

ja, meine lösung, also das aufzusplitten in +5/-4 ist vllt. eher eine umgehende lösung. ich denke nicht, dass man vorher die komplette reihen errechnen (auch wenn's einfach ist) sollte und dann die schleife vom startwert bis zu dem zwanzigsten wert der reihe durchgehen lässt.
letztendlich muss ich ja ans ziel kommen und habe es so geschafft, wenn auch vielleicht nicht auf dem optimalsten weg.

eure lösungen könnten mir aber für die weiteren aufgaben helfen, an denen ich gerade ein bisschen verzweifel.

die nächste reihe ist wie folgt:
11, 14, 18, 23.. also starten wir bei +3 und der zähler muss nach dem ersten durchgang um +1 erhöht werden. klingt relativ simpel in meinen augen, aber ich kriege es nicht umgesetzt.

mein versuch:

Javascript:
    public void reihenfolgeausgeben4() {
        int startWert = 11;
        int modifikator = 3;
        int anzahlZahlen = 20;

         for (int i=0; i < anzahlZahlen ; i++, modifikator++) {
            int wert = startWert + modifikator;

            System.out.print(wert + " "); 
        }

ich müsste ja eigentlich nur den modifikator bei jedem durchgang erhöhen (modifikator++) oder sehe ich das falsch? ist die variable vllt. nur falsch platziert?
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Also ich sehe hier mehrere Dinge:
a) for Schleife kann man so machen meine ich. Aber es ist unüblich, da andere Variablen als die Zählvariable zu erhöhen. Aber funktionieren tut es.
b) In der Reihe wird immer auf den vorherigen Wert zurück gegriffen und nicht auf den Startwert. Dein Problem ist also, dass Du immer nur den Modifikator zu dem Startwert hinzu addierst.
 

nbng

Mitglied
ah. ich glaube ich "weiß", was ich falsch mache und ich weiß worauf ich hinaus muss, aber ich komme nicht dahin. sag mir noch nicht die lösung, ich will's probieren :p

also, wirres geschwafel: ich sehe, dass durch int wert = startWert + modifikator; letztendlich nie etwas neues geschiehen wird. es wird halt immer wieder mit 11 rechnen. also muss ich eine weitere rechnung(?) einbauen, die nicht startWert verwendet, sondern einen neuen (zwischenWert?) nimmt, welcher 11+3 ist (und dann fortlaufend den neuen wert [14] + modifikator++ rechnet).

vom gedankengang her richtig?
 

httpdigest

Top Contributor
Neben dem normalen Schleifenzähler `i` benötigst du noch genau eine weitere Variable (hier mal `j` genannt), die du inkrementierst und ausgibst. Aber das Inkrementieren ist nicht einfach nur ein `j++`, sondern hängt unter anderem von `i` ab.
 

nbng

Mitglied
mit biegen und brechen und ich komme auf die gewollte zahlenfolge, aber wirkt für mich ein bisschen gemogelt :-D

Java:
  public static void reihenfolgeausgeben4() {
        int wert = 11;
        int anzahlZahlen = 19;
    
        System.out.print(wert + " ");
         for (int i=0; i < anzahlZahlen ; i++) {
            wert = i + 3 + wert;
          
            System.out.print(wert + " ");
        }
    }
 
X

Xyz1

Gast
Ich würd es nicht so kompliziert, aber etwas systematischer machen:
Java:
		for (int i = 0; i < 20 / 2; i++) {
			int x = i * 2;
			System.out.println(53 + i);
			System.out.println(58 + i);
			
		}

Jetzt könnte problemlos eine dritte Zahl hinzukommen oder sich die Rechenoperation ändern oder oder...
 
K

kneitzel

Gast
Ich würd es nicht so kompliziert, aber etwas systematischer machen:
Java:
        for (int i = 0; i < 20 / 2; i++) {
            int x = i * 2;
            System.out.println(53 + i);
            System.out.println(58 + i);
           
        }

Jetzt könnte problemlos eine dritte Zahl hinzukommen oder sich die Rechenoperation ändern oder oder...
Wozu soll das int x = i *2; dienen?
Ansonsten ist es der gleiche Code wie in #3 außer, dass Du wirklich alle Zahlen nun als magic numbers im code hast und @httpdigest die Anzahl noch in eine Variable N gesteckt hat...
 

httpdigest

Top Contributor
mit biegen und brechen und ich komme auf die gewollte zahlenfolge, aber wirkt für mich ein bisschen gemogelt :-D

Java:
  public static void reihenfolgeausgeben4() {
        int wert = 11;
        int anzahlZahlen = 19;
   
        System.out.print(wert + " ");
         for (int i=0; i < anzahlZahlen ; i++) {
            wert = i + 3 + wert;
         
            System.out.print(wert + " ");
        }
    }
Das sieht doch schon sehr gut aus! :) Wenn du jetzt noch das Inkrementieren von `wert` am Ende des Schleifenrumpfes machst, und somit keinen System.out.println() außerhalb der Schleife brauchst, ist es perfekt.
 

nbng

Mitglied
aaaaaah, ich komme nicht drauf! :mad: frustrierend.

ein inkrement erhöht doch den wert einer variablen, richtig?
'am Ende des Schleifenrumpfes' würde ja bedeuten unter System.out.print(wert + " "); , richtig?

das bringt mir doch gar nichts.. mein einziges problem ist ja momentan, dass er mir 11 nicht ausspuckt (deswegen die umgehung, dass er mir 11 einfach so ausspuckt). wenn ich dann zusätzlich den wert erhöhe, wäre das ja kontraproduktiv von dem was ich vorhabe.

edit: habe es jetzt so gelöst (ist vllt nicht, das was du mit perfekt meinst, aber wäre ja schon mal cleaner, haha):

Java:
 public static void reihenfolgeausgeben4() {
        int wert = 9;
        int n = 20;
     
     
         for (int i=0; i < n ; i++) {
           
            wert = i + 2 + wert;
           
            System.out.print(wert + " ");
           
           
        }
    }


letztendlich wird in der klausur jede lösung akzeptiert, hauptsache das ergebnis ist das gefragte (außer es wird explizit nach einer schleife gefragt und man benutzt nur print..)
 

httpdigest

Top Contributor
mein einziges problem ist ja momentan, dass er mir 11 nicht ausspuckt (deswegen die umgehung, dass er mir 11 einfach so ausspuckt). wenn ich dann zusätzlich den wert erhöhe, wäre das ja kontraproduktiv von dem was ich vorhabe.
Deswegen sollst du ja auch das Inkrement von `wert` ans Ende des Schleifenrumpfes verschieben.
Hier mal dein exakter Code mit einfach nur dem Inkrement ans Ende des Schleifenrumpfes verschoben, wie vorgeschlagen:
Java:
int wert = 11;
int anzahlZahlen = 20;
for (int i=0; i < anzahlZahlen ; i++) {
  System.out.print(wert + " ");
  wert = i + 3 + wert;
}
// -> 11 14 18 23 29 36 44 53 63 74 86 99 113 128 144 161 179 198 218 239
Ist das etwa nicht, was du willst?
 

nbng

Mitglied
oh wow. mein hirn hat darauf beharrt, dass das "inkrementieren von wert" ein neues inkrement (wert++ o.ä.) sein sollte. dass "wert = i + 3 + wert; " ebenfalls ein inkrement ist, ist mir nicht klar geworden.

das macht jetzt SEHR viel sinn, ich danke dir! :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I 2 verschiedene Klassen mit gleichen Property vergleichen Java Basics - Anfänger-Themen 13
N Verschiedene Konstruktoren mit gleichen Datentypen Java Basics - Anfänger-Themen 8
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
I SWT Plattformunabhängig laden - verschiedene SWT .jar laden Java Basics - Anfänger-Themen 0
T Java FXML selbes Fenster verschiedene Stellen im Programm Java Basics - Anfänger-Themen 5
D Zwei verschiedene Intellij Projekte, wie benutze ich wechselseitig objekte Java Basics - Anfänger-Themen 8
K verschiedene Eingaben sortieren Java Basics - Anfänger-Themen 6
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
T for-each-Schleife, verschiedene Datentypen Java Basics - Anfänger-Themen 1
HoT verschiedene ArrayLists mit ähnlichem Namen in for-Schleife aufrufen Java Basics - Anfänger-Themen 3
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Attribute für vererbte Klassen Java Basics - Anfänger-Themen 4
M JavaFX- Verschiedene Stages Java Basics - Anfänger-Themen 1
B Get / Set - Methode für verschiedene Entities? (generisch) Java Basics - Anfänger-Themen 21
L Wie Input auf verschiedene Kriterien hin überprüfen? Java Basics - Anfänger-Themen 3
T Vererbung Verschiedene Fahrzeugtypen mit unterschiedlicher Ausgabe Java Basics - Anfänger-Themen 17
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
F Komplexe Zahlen auf verschiedene Weise addieren Java Basics - Anfänger-Themen 18
M Dijkstra Algorithmus in Graphen auf mehrere verschiedene Knoten anwenden lassen Java Basics - Anfänger-Themen 11
Java The Hutt SetWerte über verschiedene Klassen Java Basics - Anfänger-Themen 16
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
B String auseinander nehmen in verschiedene Teile Java Basics - Anfänger-Themen 9
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
E JAvaFX: Verschiedene Panels nach Klick auf Node des TreeView anzeigen Java Basics - Anfänger-Themen 0
T Java verschiedene Anweisungen Java Basics - Anfänger-Themen 23
W Verschiedene Bibliotheken in einer Anwendung? Java Basics - Anfänger-Themen 2
tuc Erste Schritte verschiedene objekte in einem feld speichern Java Basics - Anfänger-Themen 4
L Verschiedene Bilder per Knopfdruck anzeigen lassen Java Basics - Anfänger-Themen 17
J ArrayList über verschiedene Klassen verwenden Java Basics - Anfänger-Themen 7
P Erste Schritte durch MenuBar verschiedene Fenster öffnen Java Basics - Anfänger-Themen 2
G Datentypen verschiedene Objekte in eine ArrayList, Generics Java Basics - Anfänger-Themen 2
GoldenShadow Input/Output Verschiedene Versionen von Input/Output Java Basics - Anfänger-Themen 3
I Drucken in Java / verschiedene Papierformate Java Basics - Anfänger-Themen 0
P Verschiedene Java Versionen nutzen Java Basics - Anfänger-Themen 6
Z Was habe ich davon mit einem Datentyp verschiedene Instanzen zu haben? Java Basics - Anfänger-Themen 6
S write(), weshalb verschiedene Ausgaben? Java Basics - Anfänger-Themen 4
E Erste Schritte Verschiedene Anfängerfragen (Rekursion, Terminierung, Schleife, etc.) Java Basics - Anfänger-Themen 5
I String trennen und verschiedene Wörter holen Java Basics - Anfänger-Themen 6
B Verschiedene Objekte in 2 dimensionalem Array speichern Java Basics - Anfänger-Themen 10
S Datei ausführen, verschiedene Ordner Java Basics - Anfänger-Themen 2
O Verschiedene Farben in einer GUI Java Basics - Anfänger-Themen 15
R Klassen Mehrere/Verschiedene Objekte umcasten Java Basics - Anfänger-Themen 8
N Vererbung Verschiedene Subclasses nach cast zur Superclass unterscheiden Java Basics - Anfänger-Themen 9
D Verschiedene Fragen zu meinem Projekt Java Basics - Anfänger-Themen 6
S textPane verschiedene formatierungen Java Basics - Anfänger-Themen 8
K Verschiedene JDK´s paralell nutzen? Java Basics - Anfänger-Themen 3
M Verschiedene Möglichkeiten mit 'equals' abdecken? Java Basics - Anfänger-Themen 9
H 2 verschiedene Objekte in Liste mit Compareable sortieren Java Basics - Anfänger-Themen 7
G Erste Schritte Über verschiedene Datentypen iterieren. Gibt es sowas? Java Basics - Anfänger-Themen 19
N Verschiedene Klassen als Parameter elegant übergeben? Java Basics - Anfänger-Themen 4
X Listen und verschiedene Methoden Java Basics - Anfänger-Themen 6
B Zwei verschiedene Daten vergleich Java Basics - Anfänger-Themen 2
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
G Umwandlung in verschiedene Zahlensysteme Java Basics - Anfänger-Themen 4
R Verschiedene Jar Versionen nutzen Java Basics - Anfänger-Themen 14
D Umgebungsvariable verschiedene Werte von JAVA_HOME? Java Basics - Anfänger-Themen 4
J verschiedene Anweisungen bei verschiedenen Zuständen Java Basics - Anfänger-Themen 9
F Info zwischen verschiedene Klassen austauschen Java Basics - Anfänger-Themen 4
R Input/Output verschiedene Datentypen als Bytes in Datei speichern Java Basics - Anfänger-Themen 15
Blindxantos Klassen in verschiedene Packages unterteilen Java Basics - Anfänger-Themen 2
F verschiedene Daten abspeichern Java Basics - Anfänger-Themen 13
N Verschiedene JFrames in einem JFrame anzeigen Java Basics - Anfänger-Themen 7
A Datentypen Verschiedene Threads synchronisieren Java Basics - Anfänger-Themen 3
D Mehrere verschiedene Farben pro fillRect Java Basics - Anfänger-Themen 3
M Verschiedene Werte in methoden Java Basics - Anfänger-Themen 3
K Verschiedene (Thread) Objekt-Positionen (int) in einem Array zusammenfassen Java Basics - Anfänger-Themen 3
J Verschiedene Rückgabetypen(int int char) Java Basics - Anfänger-Themen 10
S Datentypen Die verschiedene Java Datentypen [Anfänger] Java Basics - Anfänger-Themen 8
J OOP verschiedene Objekttypen ablegen Java Basics - Anfänger-Themen 4
B Welcher Feld Typ für verschiedene Datentypen? Java Basics - Anfänger-Themen 4
capgeti Verschiedene Rückgabetypen ohne Typecast möglich? Java Basics - Anfänger-Themen 7
S Verschiedene Arrays über Index aufrufen Java Basics - Anfänger-Themen 5
Developer_X in JEditorPane verschiedene Farben, verwenden Java Basics - Anfänger-Themen 7
C verschiedene Label auf Knopfdruck abrufen Java Basics - Anfänger-Themen 4
L Verschiedene Fonts für verschiedene Dialogelemente Java Basics - Anfänger-Themen 2
G Verschiedene Packages Java Basics - Anfänger-Themen 3
G Daten in verschiedene Listen schreiben Java Basics - Anfänger-Themen 5
C Zustandsanzeige durch verschiedene Klassen Java Basics - Anfänger-Themen 4
S verschiedene Versionen Java Basics - Anfänger-Themen 2
G Verschiedene Exceptions zu gleichem Block Java Basics - Anfänger-Themen 6
T verschiedene Anfängerfragen Java Basics - Anfänger-Themen 20
J Verschiedene Ausgaben bei gleichen Ausdrücken (Typecasting?) Java Basics - Anfänger-Themen 5
N Verschiedene Input/Output Klassen Java Basics - Anfänger-Themen 3
G verschiedene datentypen in arraylist Java Basics - Anfänger-Themen 14
L verschiedene JPanel-Instanzen erstellen Java Basics - Anfänger-Themen 8
L 2 verschiedene Typen in einer Tabelle ablegen Java Basics - Anfänger-Themen 18
N Problem mit Tastatureingaben für verschiedene Datentypen Java Basics - Anfänger-Themen 3
L verschiedene formuare in einem fenster öffnen Java Basics - Anfänger-Themen 8
I Array für verschiedene Datentypen? Java Basics - Anfänger-Themen 5
R verschiedene dateitypen öffnen Java Basics - Anfänger-Themen 5
L verschiedene zeichen einlesen Java Basics - Anfänger-Themen 5
C 2 verschiedene Tables = 2 verschiedene Renderer ? Java Basics - Anfänger-Themen 5
S mit Buttons verschiedene Bilder laden Java Basics - Anfänger-Themen 4
S klassen in verschiedene Dateien Java Basics - Anfänger-Themen 5
3 Verschiedene Fragen (bin neu hier) Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben