Hilfe: JAVA, Histogramm erstellen.
Hallo Forumuser,
ich stehe vor folgendem Problem. Und zwar muss ich für Programmiertechnik folgendes Programm erstellen, und sitze schon verzweifelt zwei Wochen vor dem Programm und komme selbst mit Hilfslektüren nicht dahinter. Wenn ihr mir helfen könntet, wäre ich sehr dankbar.
Hier das vorgegebene Programm, an den Stellen 'TODO' muss programmiert werden.
// Histogramm.java package aufgabe2;
import java.util.Scanner;
/** * Histogramm liest ganze Zahlen zwischen 1 und 6 ein und * gibt deren Häufigkeitsverteilung als Histogramm aus. * @author TODO: Name eintragen * @version TODO: Datum eintragen */ public final class Histogramm { private Histogramm() { }
private static final Scanner EINGABE = new Scanner(System.in);
/**
* main ist der Startpunkt des Programms.
* @param args wird nicht verwendet.
*/
public static void main(final String[] args) {
/* TODO: (1) hier ein Feld von Zaehlern definieren */
//-------------------------------------------------- Zahlen einlesen
System.out.println("Ganze Zahlen zwischen 1 und 6 eingeben "
+ "(Ende mit Strg-D):");
while (EINGABE.hasNext()) {
int number = EINGABE.nextInt();
/* TODO: (2) hier Anweisungen fuer das
Pruefen und Zaehlen der Eingabe schreiben */
//---------------------------------------------- Histogramm ausgeben
/* TODO: (3) hier Anweisungen fuer die Histogrammausgabe schreiben */
}
}
Konsolenausgabe, sollte dann folgende sein:
Beispiel (Eingaben des Benutzers sind fett gedruckt: 1 2 3 ...):
Ganze Zahlen zwischen 1 und 6 eingeben (Ende mit Strg-D):
1 1 2 2 2 3 3 3 3 4 4 5 5 5 6 7
Falsche Eingabe wird ignoriert: 7
3 5 5 5 5 5 5 5 5 6
Strg-D
Histogramm:
11 (2)
222 (3)
3333$ (5)
44 (2)
5555$5555$5 (11)
66 (2)
Vielen, vielen Dank bereits im Vorfeld!
Astille
2 Antworten
Habe es jetzt soweit geschafft:
// Histogramm.java package aufgabe2;
import java.util.Scanner;
/** * Histogramm liest ganze Zahlen zwischen 1 und 6 ein und * gibt deren Häufigkeitsverteilung als Histogramm aus. * @author Denis Alic * @version TODO: 03.11.2014 */ public final class Histogramm { private Histogramm() { }
private static final Scanner EINGABE = new Scanner(System.in);
/**
* main ist der Startpunkt des Programms.
* @param args wird nicht verwendet.
*/
public static void main(final String[] args) {
int[] counter = {0,0,0,0,0,0};
//-------------------------------------------------- Zahlen einlesen
System.out.println("Ganze Zahlen zwischen 1 und 6 eingeben "
+ "(Ende mit Strg-D):");
while (EINGABE.hasNext()) {
int number = EINGABE.nextInt();
switch (number) {
case 1:
counter[0]++;
break;
case 2:
counter[1]++;
break;
case 3:
counter[2]++;
break;
case 4:
counter[3]++;
break;
case 5:
counter[4]++;
break;
case 6:
counter[5]++;
break;
default: System.out.println("Falsche Eingabe wird ignoriert: " + number);
}
}
System.out.println("Strg-D");
System.out.println("Histogramm:");
for(int i=0;i<6;i++){
int j=0;
while(j<counter[i]){
if((j+1)%5 == 0){
System.out.print("$");
}
System.out.print((i+1));
j++;
}
System.out.print(" (" + counter[i] + ") " + "\n");
}
//---------------------------------------------- Histogramm ausgeben
}
}
Konsolenausgabe:
DenissMacBook:HTWG rebekka$ java aufgabe2.Histogramm
Ganze Zahlen zwischen 1 und 6 eingeben (Ende mit Strg-D):
1 1 2 2 2 3 3 3 3 4 4 5 5 5 6 7
Falsche Eingabe wird ignoriert: 7
3 5 5 5 5 5 5 5 5 6
Strg-D
Histogramm:
11 (2)
222 (3)
3333$3 (5)
44 (2)
5555$55555$55 (11)
66 (2)
Letztes Problem: Die Häufigkeit 5 wird mir sowohl als "$", als auch als weitere Zahl angezeigt, vielleicht jetzt eine Hilfestellung? Bzw. fett zu schreiben, verstehe ich nicht.
Und wo genau ist jetzt Dein Problem dafür einen Lösungsansatz zu finden?
Denkst Du wir füllen das für Dich einfach aus? Diese Anfänger Aufgabe solltest Du doch selbst hinbekommen, oder ist Dir nicht klar was ein Histogramm ist?
Zu zählen wie häufig eine Zahl vor kommt wirst Du doch wohl noch hinbekommen und die Ausgabe ist auch ein Kinderspiel.
Du kannst aber gerne Deinen bisherigen Code reinschreiben. Dann können wir gerne Tipps geben wo eventuell der Fehler liegt bzw. wo Dein Fehler im Denkansatz liegt.
Den Hauptteil Deiner Hausaufgaben musst du aber noch selbst machen.
was bistn du fürn lollek, son typischer gute frage user, erstma n bisschen scheisßse labern Xd