Histogramm horizontal spiegeln

jacka

Mitglied
Hi,
habe hier diesen Code geschrieben:
Java:
public static void histogrammAusgeben(int[] werte, int[] anzahlSterne) {
		for (int i = 0; i < werte.length; i++) {
			System.out.print(String.format("%-4d", werte[i]));
		}
		System.out.println();

		for (int i = 0; i < werte.length * 4; i++) {
			System.out.print("-");
		}
		System.out.println();

		for (int zeile = 0; zeile < werte.length; zeile++) {
			for (int spalte = 0; spalte < werte.length; spalte++) {
				if (anzahlSterne[spalte] >= zeile) {
					System.out.print(String.format("%-4s", "*"));
				} else {
					System.out.print(String.format("%-4s", " "));
				}
			}
			System.out.println();
		}
	}
Der sollte ein Histogramm so ausgeben: aber ich will das die Zahlen ganz unten stehen dann kommen die Striche und dann die Sterne nur leider weiß ich nciht wie ich das machen soll.

1 10 30 40 200 50 100 45 100
------------------------------------
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * * *
* * * * * *
* * * *
* * *
* * *
* * *
Der gibt das nicht richtig aus ich meinte für 1: 1 Stern für 10 2 sterne, 30: 4, 40: 5, 200: 20, 50: 6, 100: 10, und 45: 5
 
Zuletzt bearbeitet:

T7V

Aktives Mitglied
Ich bin mir nicht sicher wie du es genau haben willst.
Daher glaube ich es wäre hilfreich, wenn du es jetzt einmal von Hand so hinschreibst, wie dein Programm es ausgeben soll.

Edit:
Hast du als Eingabe das hier genommen?

Java:
werte = {1, 10, 30, 40, 200, 50, 100};

anzahlSterne = {1, 2, 4, 5, 20, 6, 10};
 
Zuletzt bearbeitet:

jacka

Mitglied
Ich bin mir nicht sicher wie du es genau haben willst.
Daher glaube ich es wäre hilfreich, wenn du es jetzt einmal von Hand so hinschreibst, wie dein Programm es ausgeben soll.

Edit:
Hast du als Eingabe das hier genommen?

Java:
werte = {1, 10, 30, 40, 200, 50, 100};

anzahlSterne = {1, 2, 4, 5, 20, 6, 10};

Java:
int[] werte = { 1, 10, 30, 40, 200, 50, 100, 45, 100 };

war die Eingabe und die Anzahl der Sterne hab ich in einer anderen Methode programmiert.
Also es soll so ausgegeben werden, dass die Werte ganz unten stehen , dann darüber die Bindestriche und dann die Sterne zur Zahl passend nach oben.. d.h. beim größten Wert gehen am meisten Sterne hinauf und beim kleinsten also 1 nur einer.
 

T7V

Aktives Mitglied
Auf den ersten Blick kann ich sagen:

die Reihenfolge muss so geändert werden:

Java:
for (int zeile = 0; zeile < werte.length; zeile++) {  //erst die Sterne
        
            for (int spalte = 0; spalte < werte.length; spalte++) {
            
                if (anzahlSterne[spalte] >= zeile) {
                    System.out.print(String.format("%-4s", "*"));
                } else {
                    System.out.print(String.format("%-4s", " "));
                }
            }
            System.out.println();
        }
        for (int i = 0; i < werte.length * 4; i++) { //dann die Striche
            System.out.print("-");
        }
        System.out.println();
        for (int i = 0; i < werte.length; i++) { //dann die Zahlen
            System.out.print(String.format("%-4d", werte[i]));
        }
und außerdem vergleichst du hier
Java:
spalte < werte.length
zweimal mit werte.length.
werte.length ist immer gleich (hier 9) also kannst du nicht mehr als neun Sterne ausgeben.
 

T7V

Aktives Mitglied
OK, wenn du vorher das Maximum aus deinem Wertefeld raussuchst kannst du hiermit deine Ausgabe erzielen:
Java:
int max = 100; //aus dem Bsp

for(int zeile = max; zeile != 0; --zeile){
  for(int spalte = 0; spalte != werte.length; ++spalte){
     if(anzahlSterne[spalte] >= zeile ) System.out.print(" * ");
       else System.out.print("   ");
   }
   System.out.println();
}
Die Ausgabe ist nicht 100% formatiert, aber das ist egal.
 

jacka

Mitglied
Auf den ersten Blick kann ich sagen:

die Reihenfolge muss so geändert werden:

Java:
for (int zeile = 0; zeile < werte.length; zeile++) {  //erst die Sterne
        
            for (int spalte = 0; spalte < werte.length; spalte++) {
            
                if (anzahlSterne[spalte] >= zeile) {
                    System.out.print(String.format("%-4s", "*"));
                } else {
                    System.out.print(String.format("%-4s", " "));
                }
            }
            System.out.println();
        }
        for (int i = 0; i < werte.length * 4; i++) { //dann die Striche
            System.out.print("-");
        }
        System.out.println();
        for (int i = 0; i < werte.length; i++) { //dann die Zahlen
            System.out.print(String.format("%-4d", werte[i]));
        }
und außerdem vergleichst du hier
Java:
spalte < werte.length
zweimal mit werte.length.
werte.length ist immer gleich (hier 9) also kannst du nicht mehr als neun Sterne ausgeben.

Ja und wie müsste ich das machen dass ich jetzt aber für 200 20Sterne ausgeben möchte? und das aber jetzt zb. der eine Stern der zum einser gehört auch beim einser ist und nicht ganz oben und das für alle?? und das maximum hab ich in einer seperaten Methode schon programmiert..
 

T7V

Aktives Mitglied
Java:
//Du nimmst: A die Reihenfolge von oben und B die untere Schleife
  
  public static void histogrammAusgeben(int[] werte, int[] anzahlSterne) {

    int max = 100;     // als Bsp

    for(int zeile = max; zeile != 0; --zeile){          
      for(int spalte = 0; spalte != werte.length; ++spalte){
        if(anzahlSterne[spalte] >= zeile ) System.out.print(" *  ");
        else System.out.print("    ");
      }
      System.out.println();
    }

    for (int i = 0; i < werte.length * 4; i++) {
        System.out.print("-");
    }
    System.out.println();
    for (int i = 0; i < werte.length; i++) {
        System.out.print(String.format("%-4d", werte[i]));
    }
  }

Wobei du natürlich max an das Maximum von anzahlSterne anpassen solltest.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Vertikales Histogramm mit Arrays Java Basics - Anfänger-Themen 3
B Erste Schritte Histogramm mithilfe 2-dimensionaler Arrays Java Basics - Anfänger-Themen 4
J eine Art Histogramm mithilfe eines Arrays ausgeben Java Basics - Anfänger-Themen 11
L Methoden Histogramm, Methode berechnet falsch. Java Basics - Anfänger-Themen 7
R Histogramm erstellen Java Basics - Anfänger-Themen 5
A Probleme mit Histogramm Java Basics - Anfänger-Themen 5
A Histogramm zeichnen Java Basics - Anfänger-Themen 2
P Applet Histogramm Java Basics - Anfänger-Themen 6
N Histogramm einer Messreihe Java Basics - Anfänger-Themen 7
R Java Histogramm erstellen Java Basics - Anfänger-Themen 5
E Array/ Histogramm Java Basics - Anfänger-Themen 3
H Histogramm programmieren Java Basics - Anfänger-Themen 2
Z Methoden Array horizontal spiegeln Java Basics - Anfänger-Themen 19
B Ausgabe Zahlenreihe Horizontal Java Basics - Anfänger-Themen 3
F 2DArray horizontal und vertikal ausgeben Java Basics - Anfänger-Themen 17
M Array horizontal spiegeln Java Basics - Anfänger-Themen 2
StrikeTom JScrollBar horizontal Java Basics - Anfänger-Themen 5
W Scrollbar HORIZONTAL Java Basics - Anfänger-Themen 2
M Text horizontal auf einem JPanel zentrieren Java Basics - Anfänger-Themen 2
C Methoden Vertikales spiegeln eines Bildes (zweidimensionale Arrays) Java Basics - Anfänger-Themen 5
C ZweiDimensionales Array erstellen und Spiegeln Java Basics - Anfänger-Themen 1
M String rekursiv Spiegeln mit Originalwort davor Java Basics - Anfänger-Themen 3
S Rekursives Umdrehen, Spiegeln. etc. von Strings Java Basics - Anfänger-Themen 3
E Integer oder Strings spiegeln (in while loop) Java Basics - Anfänger-Themen 6
O Spiegeln der Ausgabenreihenfolge Java Basics - Anfänger-Themen 3
A BufferedImage in Android einbinden - Bild spiegeln -wie? Java Basics - Anfänger-Themen 4
G Image spiegeln Java Basics - Anfänger-Themen 17
N Bild spiegeln Java Basics - Anfänger-Themen 5
K Bild spiegeln Java Basics - Anfänger-Themen 12
S Welche möglichkeiten gibt es eine Zahl zu spiegeln? Java Basics - Anfänger-Themen 17
E Elemente in Arraylist spiegeln? Java Basics - Anfänger-Themen 9
J Baum spiegeln Java Basics - Anfänger-Themen 7
G Exceptions - spiegeln wir da nicht einen Spiegel im Spiegel? Java Basics - Anfänger-Themen 10
V Dreieck spiegeln Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben