# Hilfe! Fragen zu Arrays!



## student1 (20. Nov 2014)

Hallo liebe Community!

Hoffe ihr könnt mir bei meinem Problem weiterhelfen.

Also mein Problem ist folgendes.
Ich hab einen Integer Array erstellt ( int [] speichern = new int[10] ).
Dann habe ich eine Zahl N, also z.B. 12345, die wird von mir in ihre Einzelteile zerlegt.
Also 1 2 3 4 5. Diese Zahlen werden dann in meinen Array abgespeichert. 
Wenn ich diese Zahlen dann auslesen will, krieg ich das Ergebnis:
5 4 3 2 1 0 0 0 0 0

Mein erste Frage wäre nun, was muss ich machen, damit der unbenutzte Speicher, also die Nullen, nicht angezeigt werden?

Diese Zahlen die ich im Array abgespeichert hab, muss ich dann in dieser Form  z.B. ausgeben:
Für die Zahl 2 
   #####
#            #
              #
    ##### 
#
#
#######


Also ich will z.B. die Zahl 12 so im Terminal ausgeben. Nebeneinander und ohne den unbenutzten Speicher. 

   #            ##### #
  ##                       #             
 # #                       #       
   #              #####  
   #           #            
   #          #                   
 #####  #######  


Bei mir werden die Zahlen untereinander ausgegeben und auch eben die unnötigen Nullen.
Hoffe einer kann mir helfen, bin noch ein Anfänger 

Danke!

Edit: Die Hashtags sollten eig. Zahlen sein. Aber ich glaub ihr wisst schon, was ich damit meine


----------



## Flown (20. Nov 2014)

Du kannst die Anzahl der enthaltenen Ziffern speichern oder die richtige Länge des Arrays stutzen. 

Was soll die Ausgabe?  Wie soll das aussehen?


----------



## student1 (20. Nov 2014)

Anhang anzeigen 7137


So soll die Ausgabe am Ende aussehen für eine beliebige Zahl N.
Zahl kann auch z.B.  0034543 sein


----------



## student1 (20. Nov 2014)

Vill. könnt ihr mit meinem etwas langem quellcode was anfangen 


```
public class Banner {

	public static void main(String[] args) {

		if (args[0] == " ")
			System.out.println("Banner kann nur Zahlen ausgeben!");
		else {

			int N = Integer.parseInt(args[0]); // Beliebige Zahl als Argument
			int z = 0;
			int[] speicher = new int[10]; // Hier werden die Zahl gespeichert,
											// die in ihre Einzelteile zerlegt
											// wurden.

			// Zahlen vertauschn bsp. 1234 --> 4321
			while (N != 0) {
				z = (10 * z) + (N % 10);
				N = N / 10; // vertauschte Zahl ist jetzt --> z
			}

			// Zahlen die größer als 9 sind, zerlegen und im Speicher anlegen
			for (int a = 0; a < speicher.length; a++) {
				speicher[a] = z % 10;
				z /= 10;

				// das "Zahlendesign" für die Zahlen 0,1,2,3,4,5,6,7,8,9
				switch (speicher[a]) {
				case 0:
					String[] Null = { "  ###", " #   #", "#     #", "#     #",
							"#     #", " #   #", "  ###" };
					for (int i = 0; i < Null.length; i++)
						System.out.println(Null[i]);
					// Zahl 0
					break;
				case 1:
					String[] Eins = { "   #", "  ##", " # #", "   #", "   #",
							" #####" };
					for (int j = 0; j < Eins.length; j++)
						System.out.println(Eins[j]);
					// Zahl 1
					break;
				case 2:
					String[] Zwei = { " #####", "#     #", "      #",
							" ##### ", "#", "#", "#######" };
					for (int k = 0; k < Zwei.length; k++)
						System.out.println(Zwei[k]);
					// Zahl 2
					break;
				case 3:
					String[] Drei = { " #####", "#     #", "      #",
							" ##### ", "      #", "#     #", " ##### " };
					for (int l = 0; l < Drei.length; l++)
						System.out.println(Drei[l]);
					// Zahl 3
					break;
				case 4:
					String[] Vier = { " #", "#    #", "#    #", "#    #",
							"#######", "     #", "     #" };
					for (int m = 0; m < Vier.length; m++)
						System.out.println(Vier[m]);
					// Zahl 4
					break;
				case 5:
					String[] Fuenf = { "#######", "#", "#", "######",
							"      #", "#     #", " #####" };
					for (int n = 0; n < Fuenf.length; n++)
						System.out.println(Fuenf[n]);
					// Zahl 5
					break;
				case 6:
					String[] Sechs = { " #####", "#     #", "#", "######",
							"#     #", "#     #", " #####" };
					for (int o = 0; o < Sechs.length; o++)
						System.out.println(Sechs[o]);
					// Zahl 6
					break;
				case 7:
					String[] Sieben = { "#######", "#    #", "    #", "  #",
							" #", " #" };
					for (int p = 0; p < Sieben.length; p++)
						System.out.println(Sieben[p]);
					// Zahl 7
					break;
				case 8:
					String[] Acht = { " #####", "#     #", "#     #", " #####",
							"#     #", "#     #", " #####" };
					for (int q = 0; q < Acht.length; q++)
						System.out.println(Acht[q]);
					// Zahl 8
					break;
				case 9:
					String[] Neun = { " #####", "#     #", "#     #",
							" ######", "      #", "#     #", " #####" };
					for (int v = 0; v < Neun.length; v++)
						System.out.println(Neun[v]);
					// Zahl 9
					break;

				}// end switch N

			}// end for
		}// end else
	}// ende methode
}// ende class
```


----------



## VfL_Freak (21. Nov 2014)

Moin,



student1 hat gesagt.:


> Edit: Die Hashtags sollten eig. Zahlen sein. Aber ich glaub ihr wisst schon, was ich damit meine


nee, offen gestanden nicht mal im Ansatz ... :bahnhof:

Ich sehe nur zwei (nicht gut dargestellte) große 'E's .....

Gruß
Klaus


----------



## Flown (21. Nov 2014)

Ich habs mir mal angesehen. Ein paar Punkte:

Überprüfung der Eingabeparameter:

Strings vergleicht man mit equals und nicht mit ==!

Das würde dann in etwa so aussehen:

```
if(args.length != 1 && args[0].trim().isEmpty()) {...}
```

Die Länge des Arrays kannst du doch ganz einfach bestimmen, indem du die Länge des Strings abfragst!

```
int[] speicher = new int[args[0].length()];
```

Vertauschen und speichern in einem String geht mit einer Schleife!

Ziffern-Arrays sollten alle die gleiche Breite + Länge haben!

Ein Ansatz wäre über alle Ziffern zu iterieren und die Darstellung in ein String_[j]-Array speichern in dem du i die Ziffern hast und j die Darstellung.

Danach kannst du dann soetwas fabrizieren:



		Java:In die Zwischenablage kopieren


 String[][] banner = ...;
for (int i = 0; i < banner[0].length; i++) {
  for (String[] digit : banner) {
    System.out.print(digit[i]);
  }
  System.out.println();
}


EDIT: Variablen schreibt man in camelCase und deine String-Arrays könntest du global als Konstanten deklarieren!_


----------



## student1 (21. Nov 2014)

Danke für deine Hilfe!
Ich versuche deine Tipps jetzt mal umzusetzen.



@Vfl_Freak

Wie die Ausgabe sein soll, sollte eig. im Anhang ersichtlich sein. Aber sehe grad, dass der link irgendwie nicht funktioniert.
Hier nochmal..


----------



## student1 (21. Nov 2014)

Hab es jetzt eine längere Zeit versucht.. Ich bekomm es einfach nicht hin. 

"Ein Ansatz wäre über alle Ziffern zu iterieren und die Darstellung in ein String_[j]-Array speichern in dem du i die Ziffern hast und j die Darstellung."

Wie bringe ich die Darstellungen in einen neuen Array rein?




		Java:In die Zwischenablage kopieren


public class Banner {

	// "Zahlendesign" wird als Konstante deklariert
	private static final String[] 
	Null = { "  ###", " #   #", "#     #", "#     #", "#     #", " #   #", "  ###" },
	eins = { "   #", "  ##", " # #", "   #", "   #", "   #", " #####" },
	zwei = { " #####", "#     #", "      #", " ##### ", "#", "#", "#######" },
	drei = { " #####", "#     #", "      #", " ##### ", "      #", "#     #", " ##### " },
	vier = { "#", "#    #", "#    #", "#    #", "#######", "     #","     #" },
	fuenf = { "#######", "#", "#", "######", "      #", "#     #"," #####" },
	sechs = { " #####", "#     #", "#", "######", "#     #", "#     #"," #####" },
	sieben = { "#######", "#    #", "    #", "   #", "  #", "  #","  #" },
	acht = { " #####", "#     #", "#     #", " #####", "#     #","#     #", " #####" },
	neun = { " #####", "#     #", "#     #", " ######", "      #","#     #", " #####" };

	public static void main(String[] args) {

		// Argument erforderlich!
		if (args.length != 1) {
		System.out.println("Geben Sie bitte ein Argument an");
		return; }
		
		int n = Integer.parseInt(args[0]); // Zahl soll größer 0 sein
		if(n<=0) {
			System.out.println("N soll größer 0 sein"); return;
			}
		
		int z = 0;// Variable für Zahlentausch 
		
		// Hier werden die Zahlen gespeichert,die in ihre Einzelteile zerlegt wurden.
		int[] speicher = new int[args[0].length()]; 

		// damit die Strings nebeneinander ausgedruckt werden --> 2d Matrix
		String[][] banner = { Null,eins,zwei,drei,vier,fuenf,sechs,sieben,acht,neun};

		// Zahlen vertauschn bsp. 1234 --> 4321
					while (n != 0) {
						z = (10 * z) + (n % 10);
						n = n/ 10; // vertauschte Zahl ist jetzt --> z
					}
					
		for (int a = 0; a < speicher.length; a++) {
			speicher[a] = z % 10;
			z /= 10;

			// das "Zahlendesign" für die Zahlen 0,1,2,3,4,5,6,7,8,9
			switch (speicher[a]) {
			case 0:

				for (int i = 0; i < Null.length; i++)
					System.out.println(Null[i]);
				// Zahl 0
				break;
			case 1:

				for (int j = 0; j < eins.length; j++)
					System.out.println(eins[j]);
				// Zahl 1
				break;
			case 2:

				for (int k = 0; k < zwei.length; k++)
					System.out.println(zwei[k]);
				// Zahl 2
				break;
			case 3:

				for (int l = 0; l < drei.length; l++)
					System.out.println(drei[l]);
				// Zahl 3
				break;
			case 4:

				for (int m = 0; m < vier.length; m++)
					System.out.println(vier[m]);
				// Zahl 4
				break;
			case 5:

				for (int d = 0; d < fuenf.length; d++)
					System.out.println(fuenf[d]);
				// Zahl 5
				break;
			case 6:

				for (int o = 0; o < sechs.length; o++)
					System.out.println(sechs[o]);
				// Zahl 6
				break;
			case 7:

				for (int p = 0; p < sieben.length; p++)
					System.out.println(sieben[p]);
				// Zahl 7
				break;
			case 8:

				for (int q = 0; q < acht.length; q++)
					System.out.println(acht[q]);
				// Zahl 8
				break;
			case 9:

				for (int v = 0; v < neun.length; v++)
					System.out.println(neun[v]);
				// Zahl 9
				break;

		
			}// end switch N
		}// end for	
		 for (int i = 0; i < banner.length; i++) {
			   for(int j = 0; j<banner.length;j++){
				
			   }
				 for (String[] digit : banner) {
			    
				   System.out.print(digit[i]);
			   }
			   System.out.println();
			   
			 }
		
		
		
		
	}//end methode main
}//end class

_


----------



## Flown (21. Nov 2014)

Ich mach das echt nicht gerne Lösungen zu posten, aber ich hab auch keine Lust jede einzelne Frage, die aufkommt, zu beantworten. Dir fehlen einfach nur Grundlagen wie es scheint. Also nochmal zurück und dann versuchs vielleicht auf deine weise:


```
public class Banner {
  
  private static final String[][] HASH_REPRESENTATION = { { "  ##   ", " #  #  ", " #  #  ", " #  #  ", " #  #  ", " #  #  ", "  ##   " },
    { "  #  ", " ##  ", "# #  ", "  #  ", "  #  ", "  #  ", " ### " }, { " ####  ", "#    # ", "     # ", "#####  ", "#      ", "#      ", "#####  " },
    { " ####  ", "#    # ", "     # ", " ####  ", "     # ", "#    # ", " ####  " },
    { "    #  ", "   ##  ", "  # #  ", " #  #  ", "###### ", "    #  ", "    #  " },
    { " ##### ", "#      ", "#      ", " ####  ", "     # ", "#    # ", " ####  " },
    { " ####  ", "#    # ", "#      ", "#####  ", "#    # ", "#    # ", " ####  " },
    { " ##### ", "#    # ", "    #  ", "   #   ", "  #    ", " #     ", "#      " },
    { " ####  ", "#    # ", "#    # ", " ####  ", "#    # ", "#    # ", " ####  " }, { " ###  ", "#   # ", "#   # ", " #### ", "    # ", "#   # ", " ###  " } };
  
  public static void main(String[] args) {
    args = new String[] { "1234567890" };
    if (args.length != 1 && args[0].trim().isEmpty()) {
      System.out.println("Banner kann nur Zahlen ausgeben!");
    } else {
      int n = Integer.parseInt(args[0]);
      String[][] banner = new String[args[0].length()][];
      for (int i = 0; n != 0; i++, n /= 10) {
        banner[i] = HASH_REPRESENTATION[n % 10];
      }
      
      for (int i = 0; i < banner[0].length; i++) {
        for (String[] digit : banner) {
          System.out.print(digit[i]);
        }
        System.out.println();
      }
    }
  }
}
```


----------



## student1 (21. Nov 2014)

Danke Flown! 
Ja mir fehlen etwas die Grundlagen. Ich mach das es seit kurzem. 
Versuche deine Lösung mal zu verstehen. Vielen Dank für die Mühe!


----------

