# Multiplikationstabelle programmieren!



## TamaraN (28. Apr 2011)

Hallo!!
Ich brauche dringend euere Hilfe!!! Ich muss in Java für nächste Woche eine Multiplikationstabelle programmieren. Die Aufgabe lautet:

Schreiben Sie ein Applet zum Anzeigen einer Multiplikationstabelle, wie sie kleine
Kinder benutzen. Beispielsweise sieht die Tabelle bis 6 folgendermaßen aus:
...1 2 3 4 5 6
1 1 2 3 4 5 6
2 2 4 6 8 10 12
3 3 6 9 12 15 18
4 4 8 12 16 20 24
5 5 10 15 20 25 30
6 6 12 18 24 30 36
Das Programm sollte eine Tabelle beliebiger Größe anzeigen können, die durch eine
Ganzzahl festgelegt wird, wie:
private int size=6;

Leider bin ich komplett überfordert und weiß noch nicht mal wo ich anfangen soll! Ich weiß, dass es etwas mit Schleifen auf sich hat, aber mehr auch nicht! ;( Wenn ich das nicht hinkriege, darf ich die Prüfung nicht schreiben. Ich weiß für viele von Euch mag es eine ziemlich einfache Aufgabe sein, aber ich bin schon regelrecht am verzweifeln! Bitte helft mir ... ;( ;( ;(


----------



## maki (28. Apr 2011)

*verschoben und Titel angepasst*


----------



## Swoop (28. Apr 2011)

was hast du denn bis jetzt?

es wird dir wohl niemand hier ne fertige lösung posten ...


----------



## GladstoneGander (28. Apr 2011)

TamaraN hat gesagt.:


> Ich weiß, dass es etwas mit Schleifen auf sich hat, aber mehr auch nicht!


Richtig, zwei Schleifen wären ein Anfang.


```
for (int i = 1; i < size; ++i) {
  for(int j = 1; j < size; ++j) {
    i*j; // <- irgendwie ausgeben
  }
}
```


----------



## Firestorm87 (2. Mai 2011)

Mal son allgemeiner Wurf in die Runde...

```
import java.util.Arrays;

public class Multiplikationstabelle {

	private static final int maxNum = 12;
	private static final char SPACE = ' ';

	public static void main(final String[] args) {

		final int maxWert = (int) Math.pow(maxNum, 2);
		final int feldLänge = String.valueOf(maxWert).length();

		for (int i = 1; i <= maxNum; i++) {
			for (int j = 1; j <= maxNum; j++) {
				System.out.print(SPACE); // Leerzeichen zwischen 2 Werten
				System.out.print(getIntAlsString(i * j, feldLänge)); // Liefert den Wert als immer gleich langen String mit führenden Leerzeichen
			}
			System.out.println(); // Zeilenumbruch
		}
	}

	private static String getIntAlsString(final int wert, final int stringLaenge) {
		final String wertAlsString = String.valueOf(wert);
		final char[] pre = new char[stringLaenge - wertAlsString.length()];
		Arrays.fill(pre, SPACE);
		return new String(pre) + wertAlsString;
	}
}
```
Aber wenn du soetwas nicht hinbekommst, dann willst du in so einem Fach eine Prüfung ablegen?


----------



## Andi_CH (2. Mai 2011)

ARadauer - wär das nicht etwas für dein Exmatrikulations-Beispiel ???:L


```
public class Multiplikationstabelle {

	private static int TABELLEN_GROESSE = 9;
	private static int NR_DIGITS = ((int)Math.floor(Math.log10(TABELLEN_GROESSE*TABELLEN_GROESSE)))+1;
	private static final String format = "%" + (NR_DIGITS) + "d";

	private static void showHeader() {
		for(int i=0; i<NR_DIGITS; i++) {
			System.out.print(" ");
		}
		System.out.print(" ");
		for (int i=1; i<=TABELLEN_GROESSE; i++)
			System.out.print(String.format(format, (i)) + " ");
		System.out.println();
	}

	private static void showLine(int mult) {
		System.out.print(String.format(format, mult) + " ");
		for (int i=1; i<=TABELLEN_GROESSE; i++)
			System.out.print(String.format(format, (i*mult)) + " ");
		System.out.println(" ");
	}

	private static void showTable() {
		showHeader();
		for (int i=1; i<=TABELLEN_GROESSE; i++)
			showLine(i);
	}

	public static void main(String[] args) {
		showTable(); 
	}
}
```


----------



## ARadauer (2. Mai 2011)

mhn ja könnte ich einfügen... 
bin gerade am überlegen, ob nicht die kurze variante reicht


```
public class Multiplikationstabelle
{
    public static void main(String[] args)
    {
        int size = 6;
        System.out.print("  ");
        for(int i = 1; i < size; i++)
            System.out.print(i+" ");
        System.out.println();
        for(int i = 1; i < size; i++){
            System.out.print(i+" ");
            for(int j = 1; j < size; j++){
                System.out.print(i*j+" ");
            }
            System.out.println();
        }
    }
}
```
wobei deine natürlich viel besser ist und der anfänger gleich sieht wie mans sauber macht...


----------



## Andi_CH (2. Mai 2011)

Klar reicht die Kurze, aber irgend etwas wollte ich ja schon noch zeigen.
Anzahl Digits bestimmen, formatieren von Strings - nicht viel aber vielleicht doch für den Einen oder Anderen neu ;-)


----------



## DorLudi (20. Nov 2012)

Hallo, ich habe ein ähnliches Problem wobei ich diese Aufgabe mit der Multiplikationstabelle jeweils mit 2 for-Schleifen und dann noch als 2. Aufgabe mit 2 while-Schleifen. Ersteres habe ich so gelöst:

```
public class MultiplikationsTabelle

{
		public static void main( String[] args)
  
		{
			
			
		for( int a = 1; a <= 10; a++)
			
		{
						
		for( int b = 1; b <= 10; b++)
			
		{
			
        if( a * b < 10) System.out.print( " ");
        
        if( a * b < 100) System.out.print( " ");
        
        System.out.print( " " + a * b);
        
      }
		
      System.out.println( "");
      
    }
		
  }
		
}
```


Nun habe ich mich bei den while-Schleifen total verfranzt und komme einfach nicht weiter ... So sieht das ganze bis jetzt aus aber irgendwie ist der totale Wurm drin: 
	
	
	
	





```
public class MultiplikationsTabelle2

{	
		public static void main( String[] args) 
            
		{ 
			
		
		int a = 1;
		
	    int b = 1;
	    
	    int bmax = 10;
	    
	    int lmax = 10;
	    
	    
		while(a <= bmax) 
		
		{	
			
	        System.out.print( "\n" + a );
	        
			while(b <= lmax)
			{	
				
		    System.out.print( "\t" + a * b);
				
        	b++;
				
			}
			
			a++;
			
	   	{
	              }
	      System.out.println( "\t");
		 }
	     }
}
```

Hättet ihr einen Vorschlag bzw. einen Lösungsansatz? 

MfG Ludi


----------



## DorLudi (22. Nov 2012)

Okay habe das Problem gelöst:

es fehlt

b=0;

vor der zweiten While-Schleife


----------

