Hilfe! Fragen zu Arrays!

student1

Mitglied
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 :D

Danke!

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

Flown

Administrator
Mitarbeiter
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

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

Java:
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
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
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:
Java:
 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!
Java:
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:
 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!
 
Zuletzt bearbeitet:

student1

Mitglied
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..

banner.png
 
Zuletzt bearbeitet:

student1

Mitglied
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:
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

Administrator
Mitarbeiter
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:

Java:
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

Mitglied
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!
 

Neue Themen


Oben