Taschenrechnerdisplay

Labonisimo

Mitglied
Neues Mitglied
Hallo,

ich habe die Aufgabe eine Zahl in Sieben-Segmente-Anzeige darzustellen.

Mit meinem code kann ich einzelne Ziffer ausgeben.. jedoch weiß ich nicht wie ich mehrstellige zahlen nebeneinander ausgeben kann.

Hierbei ist zu beachten, dass wir als Anfänger die einzelnen Stellen - beispielsweise - mit modulo 10 rechnen.



Kann mir jmd weiterhelfen?
In meinem Code soll die variable "Ergebnis" in Sieben-Segmente-Anzeige dargestellt werden - so wie auf dem bild.

Hoffe ihr könnt mir helfen

Code:
public class bsp {
   
    static void row1(int ergebnis) {
        switch (ergebnis%10) {
        case 1: Out.println(""); break;
        case 2: Out.println(" __"); break;
        case 3: Out.println(" __"); break;
        case 4: Out.println(""); break;
        case 5: Out.println(" __"); break;
        case 6: Out.println(" __"); break;
        case 7: Out.println("__"); break;
        case 8: Out.println(" __ "); break;
        case 9: Out.println(" __ "); break;
        case 0: Out.println(" __ "); break;
        }
       
    }
   
    static void row2(int ergebnis) {
        switch (ergebnis%10) {
        case 1: Out.println("|"); break;
        case 2: Out.println("   |"); break;
        case 3: Out.println("   |"); break;
        case 4: Out.println("|  |"); break;
        case 5: Out.println("|"); break;
        case 6: Out.println("|"); break;
        case 7: Out.println("  |"); break;
        case 8: Out.println("|  |"); break;
        case 9: Out.println("|  |"); break;
        case 0: Out.println("|  |"); break;

        }
       
    }
   
    static void row3(int ergebnis) {
        switch (ergebnis%10) {
        case 1: Out.println("|"); break;
        case 2: Out.println(" __|"); break;
        case 3: Out.println(" __|"); break;
        case 4: Out.println("|__|"); break;
        case 5: Out.println("|__"); break;
        case 6: Out.println("|__"); break;
        case 7: Out.println("  |"); break;
        case 8: Out.println("|__|"); break;
        case 9: Out.println("|__|"); break;
        case 0: Out.println("|  |"); break;

        }
       
    }
   
    static void row4(int ergebnis) {
        switch (ergebnis%10) {
        case 1: Out.println("|"); break;
        case 2: Out.println("|"); break;
        case 3: Out.println("   |"); break;
        case 4: Out.println("   |"); break;
        case 5: Out.println("   |"); break;
        case 6: Out.println("|  |"); break;
        case 7: Out.println("  |"); break;
        case 8: Out.println("|  |"); break;
        case 9: Out.println("   |"); break;
        case 0: Out.println("|  |"); break;

        }
       
    }
   
    static void row5(int ergebnis) {
        switch (ergebnis%10) {
        case 1: Out.println("|"); break;
        case 2: Out.println("|__"); break;
        case 3: Out.println(" __|"); break;
        case 4: Out.println("   |"); break;
        case 5: Out.println(" __|"); break;
        case 6: Out.println("|__|"); break;
        case 7: Out.println("  |"); break;
        case 8: Out.println("|__|"); break;
        case 9: Out.println(" __|"); break;
        case 0: Out.println("|__|"); break;

        }
       
    }
   
   

    public static void main(String[] args) {
        // TODO Auto-generated method stub
       
        int ergebnis = 2;
        row1(ergebnis); row2(ergebnis); row3(ergebnis); row4(ergebnis); row5(ergebnis);
       
   
       
    }   
}
 

Anhänge

  • Screenshot_20171101-155729.jpg
    Screenshot_20171101-155729.jpg
    15,1 KB · Aufrufe: 18

JStein52

Top Contributor
Du musst in deinen row<xx>-Methoden die Segmente für alle Ziffern deiner Zahl nebeneinander ausgeben (mit Out.print(...);) und dann am Ende einen ZeilenVorschub für die nächste Segmentzeile. (Mit Out.Println(); )
Das heisst du musst da jeweils eine Schleife über alles Ziffern einbauen ....
 

JStein52

Top Contributor
Falls du nicht weisst wie du alle Ziffern deiner Zahl erhältst:

mit zahl%10 erhältst du die letzte Ziffer und mit Zahl/10 schneidest du die letzte Ziffer ab. Das kannst du nutzen um die Ziffern von hinten her in einer Schleife zu ermitteln:
Code:
    static void row2(int ergebnis) {
        List<Integer> ziffern = new ArrayList<>();
        while (ergebnis > 0) {
            ziffern.add(ergebnis % 10);
            ergebnis = ergebnis / 10;
        }
   ...
   }
danach hast du alle Ziffern in der ArrayList, in umgekehrter Reihenfolge.
 

Oben