# Zahlenfolge ausgeben



## Devo (23. Apr 2010)

Hi, 
wollte ein Programm schreiben, dafür muss ich eine bestimmte Zahlenreihe ausgeben. In dem Fall 
1, 5, 9, 13, 17 usw. also immer 4 dazuaddiert. Leider funktioniert das nicht ganz, hab schon einiges herumprobiert, bin aber immer noch nicht dahinter gekommen was hier falsch sein könnte, denn Fehlermeldung kommt auch keine. 
Hoffe ihr könnt mir vl helfen, bin für jeden Vorschlag dankbar.


```
public static void main(String[] args) {
        int gesammt, gesammtneu;

        System.out.println("1");
        
        for(gesammt=1;gesammt>30;     )
        {
            gesammtneu=gesammt+4;
            System.out.println(gesammtneu);
            gesammt=gesammtneu;
                      
        }

    }

}
```


----------



## SlaterB (23. Apr 2010)

vorher selber überlegen?
erstmal eine einfache Schleife verstehen:

     for(gesammt=1;gesammt>30;     )
        {
            System.out.println(gesammt);
        }

funktionierts? nochmal im Lehrbuch nachschauen wie es geht?
gerade als Anfänger besser nicht soviel verändern, von einem zu suchenden Fehler abgesehen ist z.B. der dritte Block im for leer


----------



## Michael... (23. Apr 2010)

- Du versuchst mit einem Kriterium in die Schleife einzusteigen, dass niemals erfüllt sein wird.
- Ansonsten könnte man den inneren Teil der Schleife auf eine Zeile zusammenfassen.
- Wenn die "Abbruchvariable" innerhalb der Schleife verändert wird würde ich eine while Schleife verwenden - ist dann besser erkennbar


----------



## ARadauer (23. Apr 2010)

du hast das > verdreht... solange gesamt kleiner 30 also <

aber so schreibt mans richtig...


```
for(int i = 1; i<100; i=i+4){
			System.out.println(i);
		}
```


----------



## Devo (24. Apr 2010)

Boah, es funktioniert, vielen Dank an euch alle für die tollen Antworten
hat mir sehr geholfen


----------



## pfil (11. Jan 2012)

hallo meine Aufgabe lautet:
Gegegeben sei folgene Zahlenfolge a =1;2;4;7;11:16,.....,bei welcher sich der abstand zwischen den folgegliedern immer um 1 erhöht.
Schreiben sie ein java-programm unter Verwendung einer schleifenart, welches die ersten folgeglieder ausgibt und deren summe berechnet!(z.B. für a=5=>summe= 1+2+4+7+11= 25)

Das programm soll als Konsolenprogramm entwickelt werden. gestalten sie einen Benutzerdialog.


so Jetzt hab ich das so geschrieben:

[JAPI][/JAPI]  public static void main(String[] args) {
    // Variablendekleraton mit Wortzuweisung
       Scanner sc=new Scanner(System.in);
       System.out.println("Zahl n Eingabe = ");
       int n=sc.nextInt();

         for(int i=1; i<=100; i=i++){

    	   System.out.println(i);
        Summe=i+i;
       }

  }   //Ausgabe



}




Bitte helft mir


----------



## Gast2 (11. Jan 2012)

Du gibst die Zahlen 1 bis 100 aus. Was hat das mit der Aufgabe zu tun? Wobei hast du Probleme?


----------



## pfil (11. Jan 2012)

ich musste da was reinschreiben, weil wenn ichs freigelassen habe ging gar nix.
na er gibt mir nicht mal die zahlenfolge so aus. und die summe zu berechnen bekomm ich auch nicht hin


----------



## reiga (11. Jan 2012)

auf die schnelle...

```
import java.util.Scanner;

public class Zahlenfolge {

	/**
	 * @param args
	 */
	// Variablendekleraton mit Wortzuweisung
	private static int summe;
	private static Scanner sc;
	private static int n;
	
	public static void main(String[] args) {
		
		sc = new Scanner(System.in);
		System.out.println("Zahl n Eingabe = ");
		n = sc.nextInt();

		for (int i = 1; i < n; i++) {
			
			for(int z = 0; z < n; z++){
				i = i + z;	
				summe = summe + i;
				
				// Ausgabe der Folgezahlen
				System.out.println(i);
			}
		}
		
		// Ausgabe
		System.out.println(summe);
	} 

}
```

so oder wie soll es laufen ?!

gibt sicherlich noch bessere und einfachere lösungen, würde mich freuen wenn jemand eine posten kann, da es mich ebenfalls interessiert.


----------



## pfil (12. Jan 2012)

hallo, danke für deine schnelle antwort . bei mir funktionierts so nicht
die summe rechnet er nicht aus. die zahlen folge wird auch iwie nicht angezeigt


----------



## SlaterB (12. Jan 2012)

nix funktioniert ist keine sinnvolle Beschreibung,
hast du Java installiert, kannst du Programme kompilieren und starten, gibt es Fehlermeldungen oder läuft das Programm einfach durch?
fange mit 
JAVA - Hello World
an,
bzw. wenn es funktioniert dann gehört an Anfang und Ende jedes Programms eine Ausgabe "Anfang", "Ende",
erscheinen exakt diese beiden Ausgaben und sonst nichts?

auf Eingabe verzichte unbedingt vorerst, teste mit 
n = 5;
im Programm vorgegeben


----------



## pfil (12. Jan 2012)

na  wenn ich die zahl eingebe z.B n=1 dann steht die da ,aber er berechnet nicht die Zahlenfolge.
dann steht summe da ,wo ich selbst was eintragen soll, aber das soll er mir ja eigentlich errechnen.


----------



## SlaterB (12. Jan 2012)

was soll man aus diesem Posting herauslesen, 
hast du wahrhaftig ausschließlich einen einzigen Test, mit der denkbar ungünstigen Zahl 1, ausgeführt?
bei n = 1 wird die Schleife nicht durchlaufen, siehe Schleifenbedingung..


----------



## pfil (12. Jan 2012)

na wenn ich es mit 5 mache dann zeigt er die zahlen , aber 1,2,4,7,11,50.
und so wie ich die aufgaben stellung verstehe soll die summe der computer ausspucken und nicht das ich die hinschreibe oder?


----------



## SlaterB (12. Jan 2012)

immer eins nach dem anderen, 
bisher war deine Angabe ja u.a. 'die zahlen folge wird auch iwie nicht angezeigt',
darauf habe ich mich zuerst bezogen, schön dass sich das nun anscheinend geändert hat,
5 Zahlen 1-11 erhalte ich auch, die 6. Zahl ist dann die Summe, bei mir ist die Ausgabe 25,

du kannst ja deinen aktuellen Code posten, falls du nicht komplett sicher bist gar nichts geändert zu haben,
oder immer gut: erweitere das Programm um genauere Ausgaben

```
for (int i = 1; i < n; i++)
        {
            System.out.println("Schleife1: i: " + i + ", summe: " + summe);

            for (int z = 0; z < n; z++)
            {
                i = i + z;
                summe = summe + i;

                // Ausgabe der Folgezahlen
                System.out.println("Schleife2: z: " + z + ", i: " + i + ", summe: " + summe);
            }
        }
```
Ausgabe bei mir:

```
Schleife1: i: 1, summe: 0
Schleife2: z: 0, i: 1, summe: 1
Schleife2: z: 1, i: 2, summe: 3
Schleife2: z: 2, i: 4, summe: 7
Schleife2: z: 3, i: 7, summe: 14
Schleife2: z: 4, i: 11, summe: 25
```
das deutet natürlich auf eine ziemlich kaputten Schleifenverbund hin, die innere Schleife reicht wohl,
wie man sich auch denken kann,
wenn n = 5 ist, dann von 1 bis 5 durchlaufen, die 5 Zahlen konstruieren und addieren, fertig


----------



## jgh (12. Jan 2012)

in der Hoffnung das du das nicht einfach übernimmst...sondern auch überlegst:


```
import java.util.Arrays;
import java.util.Scanner;

public class Zahlenfolge {

	public static void main(String[] args) {
		new Zahlenfolge();

	}

	int[] zahlenFolge;
	int summe;
	int anzahlGlieder;

	public Zahlenfolge() {
		anzahlGlieder = leseAnzahlAnGliedernEin();
		zahlenFolge = new int[anzahlGlieder];
		berechneJedesGlied(zahlenFolge);
		summe = berechneSumme(zahlenFolge);
		System.out.println();
		System.out.print(Arrays.toString(zahlenFolge));
		System.out.print(" = " + summe);
	}

	private int leseAnzahlAnGliedernEin() {
		Scanner sc = new Scanner(System.in);
		System.out.print("Geben Sie die Anzahl an Gliedern ein:");
		int out = sc.nextInt();
		return out;
	}

	private void berechneJedesGlied(int[] zahlenFolge) {
			//Berechnung für die Reihe 1,2,4,7,11,16...
		int inkrement = 1;
		for (int i = 0; i < zahlenFolge.length; i++) {
			if (i == 0) {
				zahlenFolge[0] = 1;
			} else {
				zahlenFolge[i] = zahlenFolge[i - 1] + inkrement;
				inkrement++;
			}
		}
	}

	private int berechneSumme(int[] zahlenFolge) {
		for (int i = 0; i < zahlenFolge.length; i++) {
			summe = summe + zahlenFolge[i];
		}
		return summe;
	}

}
```


----------



## pfil (12. Jan 2012)

Dank
ich habe das jetzt so eingefügt nun muss ich trotzdem noch die summe eingeben und das darf glaub ich nicht sein.kannst mir da vielleicht noch ein tip geben


----------



## jgh (12. Jan 2012)

wie du musst die Summe eingeben:


```
Geben Sie die Anzahl an Gliedern ein:25

[1, 2, 4, 7, 11, 16, 22, 29, 37, 46, 56, 67, 79, 92, 106, 121, 137, 154, 172, 191, 211, 232, 254, 277, 301] = 2625
```

die wird doch am Ende der Reihe, oder Folge ausgegeben...oder was musst du?


----------



## pfil (12. Jan 2012)

bei deiner version muss ichs nicht
aber sag mal der quelltext hört sich so kompliziert an .da wir es im infounterricht nicht so hatten mit array . kann man das iwie leichter formulieren ,sodass es dem lehrer nicht auffällt das ich hilfe hatte


----------



## jgh (12. Jan 2012)

jo, das kann man sicherlich...

btw ich bin der festen Überzeugung, dass der Code selbsterklärend ist.

Versuch doch einfach dein Glück, hier im Thread sind einige gute Ansätze, die nur noch weitergedacht werden müssen... ansonsten meld dich wieder, ich muss erstmal schaffe, schaffe...


----------

