Java 1x1 Tabelle

Max Mustermann

Grünschnabel
Hallo,

muss in Java eine 1x1 Tabelle erstellen. Hab das zwar schon geschafft, aber ich bekomm die richtigen Abstände zwischen den einzelnen Ergbenissen nicht hin...

Und ist die Formatierung so in Ordnung, oder könnte man die noch ordentlicher machen?

Mein Programm:

Java:
public static void main(String[] args) {
     
       int zaehler1 = 0;
       int zaehler2;
       int a;
       int b;
       
        String eingabea = JOptionPane.showInputDialog(null, "Bitte erste Zahl eingeben");
            a = Integer.parseInt(eingabea);
       
            String eingabeb = JOptionPane.showInputDialog(null, "Bitte zweite Zahl eingeben");
                b = Integer.parseInt(eingabeb);
           
        while(zaehler1 <a){            
            zaehler1 = zaehler1 +1;
            zaehler2 = 0;
           
           
            while (zaehler2 <b){
                zaehler2 = zaehler2 +1;
                System.out.print("  "+zaehler1*zaehler2);
               
               
            }      
            System.out.println();
           
           
           
        }  
    } 
}
 
Hi und Willkommen bei tutorials.de,

im Wesentlichen wird die nötige Spaltenbreite für der höchsten möglichen Nummer bestimmt,
also "Länge von a*b" + 1 Leerzeichen. Bei kürzeren Nummern als das Ergebnis von a*b eben
entsprechend viel Leerzeichen mehr.
Mit Strings statt Nummern geht das einfacher, und man könnte es in eine eigene Methode packen:

Java:
public void printNumber(long num, long max) {
    int idealLength = ("" + max).length();
    String numText = "" + num;
    while(numText.length() <= idealLength)
        numText +=" ";
}

//und dann
printNumber(zaehler1*zaehler2, a*b);
//statt
System.out.print("  "+zaehler1*zaehler2);

Zur Codeformatierung, paar Sachen die mir auffallen (ganz pedantisch):

a) Einheitliche Tabgrößen verwenden, zB. folgende zwei Stellen:
Code:
public static void main(String[] args) {
       int zaehler1 = 0;
Code:
while(zaehler1 <a){            
    zaehler1 = zaehler1 +1;

b) Mehrfache Leerzeilen hintereinander stören.
Generell sind sowieso zu viel Leerzeilen da, das macht alles etwas unleserlich.

c) Hmm... immer weiter einrücken?
Code:
        String eingabea = JOptionPane.showInputDialog(null, "Bitte erste Zahl eingeben");
            a = Integer.parseInt(eingabea);
       
            String eingabeb = JOptionPane.showInputDialog(null, "Bitte zweite Zahl eingeben");
                b = Integer.parseInt(eingabeb);
Wieso nicht diese vier Zeilen alle gleich viel eingerückt?

d) Ob vor und nach Operatoren wie = < > * { } usw. Leerzeichen gehören
evt. vereinheitlichen, nicht bei jeder Anweisung anders machen.

e) Sehr lange Zeilen evt. auf mehrere Zeilen aufteilen, damit man nicht links-rechts-scrollen muss

Noch ohne printNumber:
Java:
public static void main(String[] args) {
	int zaehler1 = 0;
	int zaehler2;
	int a;
	int b;

	String eingabea = JOptionPane.showInputDialog(
		null, "Bitte erste Zahl eingeben");
	a = Integer.parseInt(eingabea);
	String eingabeb = JOptionPane.showInputDialog(
		null, "Bitte zweite Zahl eingeben");
	b = Integer.parseInt(eingabeb);

	while(zaehler1 < a){
		zaehler1 = zaehler1 + 1;
		zaehler2 = 0;
		while (zaehler2 < b) {
			zaehler2 = zaehler2 + 1;
			System.out.print("  " + zaehler1 * zaehler2);
		}
		System.out.println();
	}
}
 
Zurück