LCD-Ziffern-Hilfe

mar___

Mitglied
Hey, ich habe eine neue Aufgabe bekommen und habe versucht den code zu schreiben, wird es aber als Fehler angezeigt. Ein anderer Freund hat es versucht mit einer mehrdimensionalen Array zu lösen. Ich habe es auch versucht, scheint aber nicht zu klappen. Können Sie mir vielleicht helfen??
SubmissionEvaluation - Google Chrome 19.11.2021 09_06_37 (2).png
[CODE lang="java" title="lcd"]import java.util.Scanner;

public class lcd {

public static void main(String[] args) {
String arg = args[0];
int numberOfChars = arg.length();
int[][][] chars = new int[numberOfChars][3][3];
int[][] eins= {{0,0,0}, {0,0,1}, {0,0,1}};
int[][] zwei = {{0,1,0}, {0,1,1}, {1,1,0}};
int[][] drei = {{0,1,0}, {0,1,1}, {0,1,1}};
int[][] vier = {{0,0,0}, {1,1,1}, {0,0,1}};
int[][] fuenf= {{0,1,0}, {1,1,0}, {0,1,1}};
int[][] sechs = {{0,1,0}, {1,1,0}, {1,1,1}};
int[][] sieben = {{0,1,0}, {0,0,1}, {0,0,1}};
int[][] acht = {{0,1,0}, {1,1,1}, {1,1,1}};
int[][] neun = {{0,1,0}, {1,1,1}, {0,1,1}};
int[][] zero = {{0,1,0}, {1,0,1}, {1,1,1}};
int i, j, k;

for(i=0; i<numberOfChars; i++){
if(arg.charAt(i)=='1') chars = eins;
else if(arg.charAt(i)=='2') chars = zwei;
else if(arg.charAt(i)=='3') chars = drei;
else if(arg.charAt(i)=='4') chars = vier;
else if(arg.charAt(i)=='5') chars = fuenf;
else if(arg.charAt(i)=='6') chars = sechs;
else if(arg.charAt(i)=='7') chars = sieben;
else if(arg.charAt(i)=='8') chars = acht;
else if(arg.charAt(i)=='9') chars = neun;
else if(arg.charAt(i)=='0') chars = zero;
else chars = vier;
}

for (j=0; j< 3; j++) {
for (i = 0; i < numberOfChars; i++) {
for (k = 0; k < 3; k++) {
if (chars[j][k] == 1) {
if (k == 1) System.out.print("_");
else System.out.print("|");
}
else System.out.print(" ");
}
System.out.print(" ");
}
System.out.print("\n");
}
System.out.println(j + i);
}




}
[/CODE]
 
Ohne Argument erhältst du gleich zu Beginn eine verdiente IndexOutOfBounds-Exception, da du die Anzahl der Argumente nicht überprüfst, bevor du darauf zugreifst. Ansonsten gar nicht mal schlecht. Man könnte das Ganze sicher noch vereinfachen oder besser lesbar gestalten aber es tut seinen Dienst.
 
Ich habe es jetzt anders gemacht, jetzt muss ich noch herausfinden wie ich die Zahlen nebeneinander drücken soll. Irgendwelche Ideen??
Außerdem muss ich noch mit -s<size> arbeiten, weiss ich aber nicht wie....
eclipse-workspace - lcdziffern_src_lcd.java - Eclipse IDE 20.11.2021 18_39_11.png


Java:
import java.util.Scanner;

public class lcd {

     public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         String command = sc.nextLine();
         int i=0;
         char a = '_', b='|', c=' ';
    char [][] ziffern = new char [3][];

    if(command.contains("1")) {
        System.out.println(c);
        System.out.println(b);
        System.out.println(b);
        }
    if(command.contains("2")) {
        System.out.println(" "+a);
        System.out.println(" "+a + "" + b);
        System.out.println(b + "" + a);
        }
    if(command.contains("3")) {
        System.out.println(a);
        System.out.println(a + "" + b);
        System.out.println(a + "" + b);
        }       
    if(command.contains("4")) {
        System.out.println(b + "" + a + "" + b);
        System.out.println(" " +" " + b);
        
        }
     if(command.contains("5")) {
        System.out.println(" "+ a);
        System.out.println(b +"" + a);
        System.out.println(" " + a + "" + b);
        }
     if(command.contains("6")) {
         System.out.println(" " + a);
         System.out.println(b + "" + a);
         System.out.println(b + "" +a + "" + b );
         }
     if(command.contains("7")) {
         System.out.println(" " + a);
         System.out.println(" " + " " + b);
         System.out.println(" " + " " + b);
         }
     if(command.contains("8")) {
         System.out.println(" " + a);
         System.out.println( b + "" + a + "" + b);
         System.out.println(b + "" + a+ "" + b);
         }   
     if(command.contains("9")) {
         System.out.println(" " + a);
         System.out.println(b + ""  + a + "" + b);
         System.out.println(" " + " " + b);
         }
     if(command.contains("0")) {
         System.out.println(" " + a);
         System.out.println(b + " "  + "" + b);
         System.out.println(b + "" + a+ "" + b);
         }
    
    }
}
 
Irgendwie machst Du das alles sehr kompliziert und dazu noch sehr falsch. Mit println() wird eine Zeile beendet, folglich muss die Zeile zu dem Zeitpunkt vollständig sein... so viel mal als kleiner Tipp.
 
Außerdem scheint mir die Sache mit dem Scanner falsch. Du sollst nicht von der Konsole einlesen, sondern die Aufrufparameter verwenden. Du musst also den Parameter "args" der main() Methode auswerten. Dabei handelt es sich um ein Array von Strings.

Nach einem Aufruf mit lcd.exe 42 -s 3 wäre der Inhalt von "args" folglich { "42", "-s", "3" }. Berücksichtige dabei, dass der Aufruf auch lcd.exe -s 3 42 lauten könnte.
 
Zuletzt bearbeitet:

Zurück
Oben