/*
Datei............: Aufg0439.java
Projekt..........: Einführung in die Java-Programmierung
Erstellt.........: 04.10.97, Guido Krüger
Geändert.........: --
Aufgabe..........: Musterlösung zu Aufgabe 04.39
Kommentare.......:

Das nachfolgende Programm liest alle Werte in das Array aValues
ein, das die Größe MAXVALUES hat, ungültige Werte werden
ignoriert. Die Anzahl der eingelesenen Werte wird in der 
Variable numvalues gespeichert, der größte gefundene 
Wert in maxvalue.

Nachdem die Eingabeschleife beendet wurde, beginnt das Programm
mit der Ausgabe der Werte. Dazu wird für die Werte  maxvalue bis 1 
jeweils eine Zeile ausgegeben und zunächst mit dem 
Schleifenzähler (also dem y-Achsenwert) beschriftet. 
Anschließned wird nebeneinander für jeden Arraywert,
der mindestens den y-Achsenwert hat, ein Sternchen ausgegeben,
andernfalls wird es ausgelassen. Zum Schluss muss lediglich
noch die x-Achse und ihre Beschriftung (die Maximalwerte jeder
Spalte) ausgegeben werden.

Obwohl Methoden eigentlich erst im nächsten Abschnitt 
eingeführt werden, sollte die Verwendung der Methode 
print2DigitInt, die dazu dient, max. 2-stellige Ganzzahlen
formatiert auszugeben, selbsterklaerend sein. 

Etwas unbefriedigend ist die feste Maximalgröße MAXVALUES
des Eingabearrays. Alternativ hätte ein Array verwendet
werden, daß "dynamisch wächst" (z.B. durch Erzeugen eines
größeren Arrays und Kopieren der bisher eingelesenen
Wertein in dieses dieses Array), wenn mehr Werte eingegeben 
werden sollen, als das aktuelle Array faßt. Wir werden später
die Klasse Vector kennenlernen, die für diese Aufgabe sehr
viel besser geeignet ist.
*/
import java.io.*;

public class Aufg0439
{
  static final int MAXVALUES = 20;

  public static void main(String args[])
  {
    BufferedReader din = new BufferedReader(new InputStreamReader(System.in));
    int aValues[] = new int[MAXVALUES];
    int numvalues = 0;
    int maxvalue = 0;

    try {
      //---Eingabeschleife---
      for (numvalues = 0; numvalues < MAXVALUES; ++numvalues) {
	System.out.print("Bitte eine Ganzzahl zwischen 1 und 20 eingeben (0=Ende): ");
	int number = Integer.parseInt(din.readLine());
	if (number == 0) {
	  break;
	} else if (number < 0 || number > 20) {
	  --numvalues; //gleichen Eingabewert nochmal lesen
	} else {
	  aValues[numvalues] = number;
	  if (number > maxvalue) {
	    maxvalue = number;
	  }
	}
      }
      //---Ausgabeschleife---
      for (int i = maxvalue; i >= 1; --i) {
	print2DigitInt(i);
	System.out.print("|");
	for (int j = 0; j < numvalues; ++j) {
	  System.out.print((aValues[j] >= i) ? "  *" : "   ");
	}
	System.out.println();
      }
      //---X-Achse zeichnen---
      System.out.print("--+");
      for (int i = 0; i < numvalues; ++i) {
	System.out.print("---");
      }
      System.out.println();
      //---X-Achse beschriften---
      System.out.print("  |");
      for (int i = 0; i < numvalues; ++i) {
	System.out.print(" ");
	print2DigitInt(aValues[i]);
      }
      System.out.println();
    } catch (IOException e) {
      System.out.println("  Fehler beim Lesen der Eingabe");
    }
  }

  public static void print2DigitInt(int number) 
  {
    if (number >= 10) {
      System.out.print(number);
    } else {
      System.out.print(" "  + number);
    }
  }
}

