Java System.out.println problem

DefconDev

Commander
Registriert
Jan. 2008
Beiträge
2.601
kann man das irgendwie vereinfachen, wie ich das geschrieben habe zeigt mir die Bildschirmausgabe alles sehr unübersichtlich da.

PHP:
import java.io.*;

public class Potenzen{
  public static void main(String args[]){
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    int ZweierReihe   = 2;
    int DreierReihe   = 3;
    int ViererReihe   = 4;
    int FuenferReihe  = 5;
    int SechserReihe  = 6;
    int SiebenerReihe = 7;
    int AchterReihe   = 8;
    int NeunerReihe   = 9;
    int ZehnerReihe   = 10;

    while ( ZweierReihe <= 20&& DreierReihe <= 30&& ViererReihe <= 40&& FuenferReihe <= 50&& SechserReihe <= 60&& SiebenerReihe <= 70&& AchterReihe <=80&& NeunerReihe <=90&& ZehnerReihe <=100) {
      System.out.println("ZweierReihe: " + ZweierReihe + "DreierReihe: " + DreierReihe + "ViererReihe: " + ViererReihe + "FuenferReihe: " + FuenferReihe + "SechserReihe: " + SechserReihe + "SiebenerReihe: " + SiebenerReihe + "AchterReihe: " + AchterReihe + "NeunerReihe: " + NeunerReihe + "ZehnerReihe: " + ZehnerReihe);

      ZweierReihe   = ZweierReihe    +  2;
      DreierReihe   = DreierReihe    +  3;
      ViererReihe   = ViererReihe    +  4;
      FuenferReihe  = FuenferReihe   +  5;
      SechserReihe  = SechserReihe   +  6;
      SiebenerReihe = SiebenerReihe  +  7;
      AchterReihe   = AchterReihe    +  8;
      NeunerReihe   = NeunerReihe    +  9;
      ZehnerReihe   = ZehnerReihe    +  10;
      }
    }
}
 
ja sorry, das programm funktioniert also die reihen werden alle angezeigt nur in die übersicht im programmcode geht hier flöten und wenn ich das programm starte zeigt mir die cmd.exe nur noch alles kreuzquer an. Ich möchte nur wissen ob es einen weg gibt das alles ein wenig überichtlicher zu gestalten.

ich kann gerne auch ein foto des problems posten.
 
aso.... mach doch nen linebreak... "\r\n" oder "\n" je nach dem was du gerade für OS benutzt.
 
such mal nach dem wert für newline in java. In anderen sprachen kann man da "\r", "\n" oder "\r\n" verwenden.

Dann erweiterst du deinen output um

("Bescheibung1"+wert1+"\n"+"Beschreibung2"+wert2+"\n"+... )
 
ja danke habe ich gemacht, hat auch funktioniert sieht jetzt viel besser aus :-)

Googlen kann ich auch ganz gut :P nur wenn ich mir die ursache meines problems nicht bewusst bin , kann ich lange sucen und hier sind ja schon einige personen die anscheinend mir gerne helfen :-) danke
 
Ich weis ja nicht, ob du weist, was Arrays sind, aber meiner Meinung nach wären hier ein Array ganz gut angebracht ! :)
 
PHP:
public class Potenzen {
	private static Integer[] a = {2, 3, 4, 5, 6, 7, 8, 9, 10};
	private static Integer[] b = a.clone();

	public static void main(String args[]) {
		while (b[b.length - 1] <= a[a.length - 1] * 10) {
			for (int i = 0; i < a.length; i++) {
				if (a[i] == 2) System.out.println("~~~~~~~~~~~~~~~");
				if (a[i] < 10) System.out.print(" ");
				System.out.println(a[i] + "er-Reihe: " + b[i]);
				b[i] += a[i];
			}
		}
		System.out.println("~~~~~~~~~~~~~~~");
		System.exit(0);
	}
}
 
leider nicht, ich stehe ganz am anfang meiner programmierkenntnisse, und in den vorlesungen kam das auch nicht dra, gehört dass zur objektorientierten java prorammierung?


@fleshgrinder, vielen dank, werde mir das exemplar mal genauer anschauen. Sieht aber nach viel weniger schreibarbeit aus als bei mir ^^ Gefällt mir
Ergänzung ()

Habe jetzt das problem dass ich eine art definitionsbereich erstellen will, er soll bei einer if anweisung alle zahlen die gerade sind mit einem g markieren.

wie kann ich einer int zahl sagen oder zuweisen, dass sie alle zahlen zwischen 1-100 ist? geht das überhaupt?
Ergänzung ()

Jetzt habe ich dem ne for schleife eingebaut, nur zeigt er mir jetzt alles doppelt an, ich verstehe nicht warum, wie kann ich de sagen dass er alle geraden mit g und ungeraden mit u markieren soll

PHP:
import java.io.*;

public class Multiplikationsreihen{
  public static void main(String args[]){
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    int ZweierReihe   = 2;
    int DreierReihe   = 3;
    int ViererReihe   = 4;
    int FuenferReihe  = 5;
    int SechserReihe  = 6;
    int SiebenerReihe = 7;
    int AchterReihe   = 8;
    int NeunerReihe   = 9;
    int ZehnerReihe   = 10;

    while ( ZweierReihe <= 20&& DreierReihe <= 30&& ViererReihe <= 40&& FuenferReihe <= 50&& SechserReihe <= 60&& SiebenerReihe <= 70&& AchterReihe <=80&& NeunerReihe <=90&& ZehnerReihe <=100) {


      ZweierReihe   = ZweierReihe    +  2;
      DreierReihe   = DreierReihe    +  3;
      ViererReihe   = ViererReihe    +  4;
      FuenferReihe  = FuenferReihe   +  5;
      SechserReihe  = SechserReihe   +  6;
      SiebenerReihe = SiebenerReihe  +  7;
      AchterReihe   = AchterReihe    +  8;
      NeunerReihe   = NeunerReihe    +  9;
      ZehnerReihe   = ZehnerReihe    +  10;


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



      if(i%2==0)

                    System.out.println("ZweierReihe: " + ZweierReihe+"\n" + "DreierReihe: " + DreierReihe + "\n" + "ViererReihe: " + ViererReihe + "\n" + "FuenferReihe: " + FuenferReihe + "\n" + "SechserReihe: " + SechserReihe + "\n"+ "SiebenerReihe: " + SiebenerReihe + "\n"+ "AchterReihe: " + AchterReihe + "\n"+ "NeunerReihe: " + NeunerReihe + "\n"+ "ZehnerReihe: " + ZehnerReihe+ "\n");
                    else
                    System.out.println("ZweierReihe: " + ZweierReihe+"\n" + "DreierReihe: " + DreierReihe + "\n" + "ViererReihe: " + ViererReihe + "\n" + "FuenferReihe: " + FuenferReihe + "\n" + "SechserReihe: " + SechserReihe + "\n"+ "SiebenerReihe: " + SiebenerReihe + "\n"+ "AchterReihe: " + AchterReihe + "\n"+ "NeunerReihe: " + NeunerReihe + "\n"+ "ZehnerReihe: " + ZehnerReihe+ "\n");

                         }
      }
    }
}
 
Zuletzt bearbeitet:
Mit Modulo:

PHP:
public class Potenzen {
	private static Integer[] a = {2, 3, 4, 5, 6, 7, 8, 9, 10};
	private static Integer[] b = a.clone();

	public static void main(String args[]) {
		while (b[b.length - 1] <= a[a.length - 1] * 10) {
			for (int i = 0; i < a.length; i++) {
				if (a[i] == 2) line();
				if (a[i] < 10) System.out.print(" ");
				System.out.println(a[i] + "er-Reihe: " + b[i] + ((a[i] % 2 == 0) ? "g" : "u"));
				b[i] += a[i];
			}
		}
		line();
		System.exit(0);
	}

	private static void line() {
		System.out.println("~~~~~~~~~~~~~~~");
	}
}

Und schau' dir bitte unbedingt mal folgendes Grundprinzip des Programmierens auch gleich an DRY.
 
Zuletzt bearbeitet:
Das ist super lieb von dir werde mir deine sachen auch als vorlage abspeichern, nur das problem ist , ich muss das meinen prof. die tage vorführen, der wird mir im leben nicht abkaufen dass ich deinen übernommen code selber geschrieben habe.
Ich bin völlig deiner meinung , den code so kurz wie möglich zu halten, aber soweit bin ich nicht. Ich bin wie ein baby das gerade lernt zu laufen, da kannst du nicht verlangen schon die ersten sprints einzulegen, um das etwas überspitzt darzustellen :PPP
 
Kein Problem, ich verstehe was du meinst. Ob es dann allerdings so zielführend ist in einem Forum um Hilfe zu fragen … vielleicht besser von jemandem direkt erklären lassen.

Hier ein voll auskommentierter Code der auch etwas einfacher aufgebaut ist.
PHP:
// {{{ Multiplikationsreihen
public class Multiplikationsreihen {
	/**
	 * Constructor.
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		// Wir verwenden einen Ganzzahl-Array zum Speichern der Zahlen, damit
		// es einfacher ist Vergleiche zu Erstellen und die Ausgaben zu ver-
		// einheitlichen.
		Integer reihe[] = {
			2, // Index 0
			3, // Index 1
			4, // Index 2
			5, // Index 3
			6, // Index 4
			7, // Index 5
			8, // Index 6
			9, // Index 7
			10 // Index 8
		};

		// Solange der aktuelle Wert kleiner als das Zehnfache des höchsten
		// Ausgangswertes ist soll die Schleife durchlaufen.
		while (reihe[8] <= 100) {
			// Nun benötigen wir eine Schleife um über alle Indexe des Arrays
			// zu iterieren um dann auf eben diese zugreifen zu können.
			//
			// Mit reihe.length erhalten wir die Anzahl an Elementen des Arrays.
			// Dieser Wert ist um Eins höher als der Index, da ein Element nicht
			// als 0 zurückgegeben wird, sondern als 1 (wie es mathematisch ja
			// auch korrekt ist).
			for (int i = 0; i < reihe.length; i++) {
				// Wenn der Index 0 ist geben wir eine Linie aus um eine optische
				// Trennung in der Konsole zu erzeugen.
				if (i == 0) {
					System.out.println("~~~~~~~~~~~~~~~~~~~~");
				}
				// Wenn der aktuelle Index +2 kleiner 10 ist geben wir ein Leer-
				// zeichen auf der Konsole aus um eine visuelle Einrückung zu
				// erzeugen, dadurch ist alles auf der gleichen Höhe (horizontal).
				if (i + 2 < 10) {
					System.out.print(" ");
				}
				// Nun geben wir das aktuelle Rechenergebnis aus.
				System.out.print((i + 2) + "er-Reihe: " + reihe[i]);
				// Je nachdem ob es sich um eine gerade oder ungerade Zahl handelt
				// müssen wir noch ein "g" (für Gerade) oder "u" (für Ungerade)
				// anhängen. Dies erreichen wir durch eine Modulo-Operation mit
				// Zwei die Null-Rest gibt.
				//
				// "\n" ist das ASCII-Steuerzeichen für einen Zeilenumbruch.
				if (reihe[i] % 2 == 0) {
					System.out.print("g\n");
				}
				else {
					System.out.print("u\n");
				}
				// Zu guter letzt müssen wir den aktuellen Rechenwert mit dem
				// ursprünglichen Ausgangswert addieren (dies können wir wieder
				// über den Index +2 errechnen).
				reihe[i] += i + 2;
			}
		}
		// Zu guter letzt geben wir wieder die Linie aus als visuelle Trennung.
		System.out.println("~~~~~~~~~~~~~~~~~~~~");
	}
}
// }}}

Ich habe meinen Code etwas angepasst und verbessert. Rechne jetzt auch mit dem Index, dadurch wird auch nur noch ein Array benötigt und die Abfolge entspricht eigentlich genau dem oberen Code.

PHP:
// {{{ Multiplikationsreihen
public class Multiplikationsreihen {
    private static Integer[] a = {2, 3, 4, 5, 6, 7, 8, 9, 10};

    /**
     * Constructor
     * 
     * @param args
     */
    public static void main(String args[]) {
    	while (a[a.length - 1] <= (a.length + 1) * 10) {
    		for (int i = 0; i < a.length; i++) {
    			int j = i + 2;
    			if (i == 0) line();
    			if (j < 10) System.out.print(" ");
    			System.out.println(j + "er-Reihe: " + a[i] + ((a[i] % 2 == 0) ? "g" : "u"));
    			a[i] += j;
    		}
    	}
    	line();
        System.exit(0);
    }

    /**
     * Print a visual delimiter to the console.
     */
    private static void line() {
        System.out.println("~~~~~~~~~~~~~~~");
    }
}
// }}}
 
Zuletzt bearbeitet:
Welchen Sinn hat es denn, diesen Array zu verwenden?

Geht doch in der Art ebenso

PHP:
public static void main(String[] args){
        for(int n = 1; n <= 10; n++){
            System.out.println("~~~~~~~~~~~~~~~");
            for(int f = 1; f <= 10; f++){
                char gerade = f*n%2==0 ? 'g' : 'u';
                System.out.println(f+"er-Reihe: "+n*f+""+gerade);
            }
        }
        System.out.println("~~~~~~~~~~~~~~~");
    }
 
Ich finde es nicht gut, dass du im Forum nach solchen Dingen fragst. Man lernt am besten, wenn man knobeln, herumprobieren, recherchieren und dann wieder knobeln kann! Es gibt unzählige Anleitungen und Beispiel, speziell für Java.
Die Leute waren nett und haben dir geholfen, denkst du vielleicht jetzt. Aber auf lange Sicht schadet es dir, glaub mir. Ist auch nicht böse gemeint, ich will dich nicht kritisieren, sondern helfen.

Später, wenn du weiterführende Kurse hast (z.B. Algorithmen und Datenstrukturen), wirst du auch eine Menge Lösungen im Netz finden (falls es bei euch auch an's Implementieren gehen sollte). Wenn man da auch so vorgeht, dann wird man Programmieren irgendwann hassen. Kenne wirklich dutzende von Leuten, denen es so ergangen ist.
 
deepfritz schrieb:
Welchen Sinn hat es denn, diesen Array zu verwenden? […]

Ich denke mal es geht dabei darum die Ausgangswerte von Hand bestimmen zu können. Imho wäre er nicht notwendig, wie du in deinem Code auch aufzeigst. Auch könnte man die Werte von der Konsole einlesen oder gleich ein GUI anbieten. Die Möglichkeiten sind schier unendlich. ;)

Ich kann mich samotyr nur anschließen bei dem was er hier schreibt. Besser selber den Kopf zerbrechen. ;)
 
Also, natürlich habt ihr recht, und ich wollte mir nur anschauen wie das erfahrene leute lösen, deswegen habe ich mich auch noch mal selber dran gesetzt und das komplett neu geschrieben, da wir noch keine "Integer" hatten, bzw. heute erst arrays dran genommen haben. Habe ich das ganze mit einer while schleife gemacht.

PHP:
import java.io.*;

    public class Malreihen{
      public static void main(String args[]){
           BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
           
      double zwer = 0;

      while( zwer <20){
          zwer= zwer+2;

      if (zwer % 2 == 0) {
                    System.out.print("Zweier Reihe: "+zwer+"g\n");
                }
                else {
                    System.out.print("Zweier Reihe: "+"u\n");
                }
      }

       System.out.println("           ");
       double dreier = 0;
       
       while(dreier<30){
         dreier=dreier+3;
         
         if(dreier %2 == 0){
           System.out.print("Dreier Reihe: "+dreier+"g\n");
           }
           else {
                System.out.print("Dreier Reihe: "+dreier+"u\n");
                
           }

       }

      System.out.println("           ");

      double vierer = 0;

       while( vierer <40){
          vierer= vierer+4;

          if (vierer % 2 == 0) {
                    System.out.print("Vierer Reihe: "+vierer+"g\n");
          }
                else {
                    System.out.print("Vierer Reihe: "+"u\n");
                }
       }

       System.out.println("           ");

       double fuenfer = 0;

       while(fuenfer<50){
         fuenfer=fuenfer+5;

         if(dreier %2 == 0){
           System.out.print("Fuenfer Reihe: "+fuenfer+"g\n");
         }
           else {
                System.out.print("Fuenfer Reihe: "+fuenfer+"u\n");

           }

       }
       System.out.println("           ");

       double sechser = 0;

       while(sechser<60){
         sechser=sechser+6;

         if(sechser %2 == 0){
           System.out.print("Sechser Reihe: "+sechser+"g\n");
         }
           else {
                System.out.print("Sechser Reihe: "+sechser+"u\n");

           }

       }
       System.out.println("           ");

       double siebener = 0;

       while(siebener<70){
         siebener=siebener+7;

         if(siebener %2 == 0){
           System.out.print("Siebener Reihe: "+siebener+"g\n");
         }
           else {
                System.out.print("Siebener Reihe: "+siebener+"u\n");

           }

       }
       System.out.println("           ");

       double achter = 0;

       while(achter<80){
         achter=achter+8;

         if(achter %2 == 0){
           System.out.print("Achter Reihe: "+achter+"g\n");
         }
           else {
                System.out.print("Achter Reihe: "+achter+"u\n");
           }
       }
       System.out.println("           ");

       double neuner = 0;

       while(neuner<90){
         neuner=neuner+9;

         if(neuner %2 == 0){
           System.out.print("Neuner Reihe: "+neuner+"g\n");
         }
           else {
                System.out.print("Neuner Reihe: "+neuner+"u\n");

           }

       }
       System.out.println("           ");

       double zehner = 0;

       while(zehner<100){
         zehner=zehner+10;

         if(zehner %2 == 0){
           System.out.print("Zehner Reihe: "+zehner+"g\n");
         }
           else {
                System.out.print("Zehner Reihe: "+zehner+"u\n");

           }

       }




    }
           



}
 
Ihr habt schon double (und sowas wie BufferedReader) aber noch kein int? :confused_alt:

Achja: Wozu erstellst du den BufferedReader überhaupt, wenn du ihn dann nicht verwendest?


Bei den Reihen mir geradem Grundwert müsstest du eigentlich nicht auf gerade oder ungerade prüfen... ;)

Da fehlt bei der Zweier- und der Vierer-Reihe auch noch was in der Ausgabe für den Fall ungerade (der allerdings ohnehin nicht vorkommt, fällt daher im Ergebnis nicht auf).

Statt einem \n ganz am Ende von System.out.print würde ich einfach System.out.println verwenden.
 
Ja man sagte mir es wird hauptsächlich mit double werten gearbeitet, daher gewöhne ich es mir direkt an.

Habe eben noch zwei kopfgesteuerte for schleife gebasteltet, also verschachtelt. Ist noch viel simpler, naja übung macht den meister :-)
 
Zurück
Oben