9-Segment-Anzeige

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Guten Abend alle zusammen!!

Ich habe ein problem mit einer 9-Segment-Anzeige von Buchstaben (hab' hier im Forum danach gesucht, hab' aber nix gefunden...)
Obwohl mein Code ziemlich lang ist (für dieses Forum), würde ich ihn euch gerne zeigen; vielleicht kann mir jemand weiterhelfen???

Code:
public static void main(String[] args) {
		

		char choice;
		char operator;
		
		do {
			Out.print("Zeile : ");
			operator = In.readChar();
			while (In.done()) {
				operator = In.readChar();
				printAs9Segment(operator);
			}
			
		// Ending or not
		Out.println();
		Out.print(" Wollen Sie weitermachen (j/n)? ");
		choice = In.readChar();
		Out.println();
		} while (choice == 'j');

	}

	// Method for printing out as 9 segment
	static void printAs9Segment(char operator) {
		// for all seven lines
		for (int line = 1; line <= 4; line++) {
			printDigitForRow(operator,line);
		}
	}

	static void printDigitForRow(char operator, int line){
		switch (line){
			case 1:
			switch (operator){
				case 'a': case 'b': case 'c': case 'e': case 'f': case 'g': 
					case 'o': case 'p': case 'q': case 'r': case 's':
				Out.print(" -- "); break;
				case 'd': 
				Out.print(" -  "); break;
				case 'h': case 'i': case 'k': case 'l': case 'm': case 'n': 
					case 'u': case 'v': case 'w': case 'x': case 'y':
				Out.print("    "); break;
				case 'j': 
				Out.print("   -"); break;
				case 't': case 'z':
				Out.print(" ---"); break;	
			}
			case 2:
			switch (operator){
				case 'a': case 'b': case 'h': case 'o': case 'p': case 'q': 
					case 'r': case 'u':
				Out.print("|  |"); break;
				case 'c': case 'e': case 'f': case 'g': case 'l':  
				Out.print("|   "); break;
				case 'd': 
				Out.print("| | "); break;
				case 'i': case 'j':  
				Out.print("  | "); break;
				case 'k':
				Out.print("| / "); break;
				case 'm':
				Out.print("|'\'/|"); break;
				case 'n':
				Out.print("|'\' |"); break;
				case 's':
				Out.print("|__ "); break;
				case 't':
				Out.print("  | "); break;
				case 'v':
				Out.print("'\'   /"); break;
				case 'w':
				Out.print("'\'     /"); break;
				case 'x': case 'y':
				Out.print(" '\' /"); break;
				case 'z':
				Out.print("   /"); break;
				
			}
			case 3:
			switch (operator) {
				case 'a': case 'h':  
				Out.print("|--|"); break;
				case 'b': 
				Out.print("| -|"); break;
				case 'c': case 'l': 
				Out.print("|   "); break;
				case 'd': case 'm': case 'o': case 'q': case 'u': 
				Out.print("|  |"); break;
				case 'e': case 'f': 
				Out.print("|-  "); break;
				case 'g': 
				Out.print("| -|"); break;
				case 'i': case 'j': case 's': case 't':  
				Out.print("  | "); break;
				case 'k': 
				Out.print("|/  "); break;
				case 'n': 
				Out.print("| '\'|"); break;
				case 'p': case 'r':  
				Out.print("| -- "); break;
				case 'v': 
				Out.print(" '\' / "); break;
				case 'w': 
				Out.print(" '\' / / "); break;
				case 'x': case 'y': 
				Out.print("  / "); break;
				case 'z': 
				Out.print("  / "); break;

			}
			case 4:
			switch (operator) {
				case 'a': case 'h': case 'm': case 'n': 
				Out.print("|  |"); break;
				case 'b': case 'g': case 'o': case 'u':
				Out.print("|__|"); break;
				case 'c': case 'e': case 'l':  
				Out.print("|__ "); break;
				case 'd': 
				Out.print("|_| "); break;
				case 'f': case 'p':   
				Out.print("|   "); break;
				case 'i': case 't':  
				Out.print("  | "); break;
				case 'j': case 's':
				Out.print(" __|"); break;
				case 'k': case 'r':
				Out.print("| '\' "); break;
				case 'q': 
				Out.print("|__'\'"); break;
				case 'v': 
				Out.print("  '\'  "); break;
				case 'w': 
				Out.print("  '\' '\'  "); break;
				case 'x': 
				Out.print(" / '\'"); break;
				case 'y': 
				Out.print(" /  "); break;
				case 'z': 
				Out.print(" /__"); break;
			}
		}
	}

Wenn ich nun z.B. "ha" eingebe, kekomme ich diese Ausgabe:


Zeile : ha
-- | ||--|| || ||--|| ||--|| || |


Kann mir vielleicht jemand weiterhelfen??? Wie bekomm' die Zeichen z.B. untereinander???

Vielen lieben Dank schon mal!! :wink:
Lg
 

SnooP

Top Contributor
Du musst versuchen Zeilenumbrüche bei den einzelnen lines hinzubekommen, sprich "\n" in die entsprechenden Strings für die 4 Zeilen am Ende dazupacken... musst dann natürlich noch aufpassen, dass die tatsächlich richtig untereinander passen... - hab mir das ganze programm jetzt nicht komplett durchgesehen - aber du musst dann in einem rutsch hintereinander für die 1. Line der Buchstaben ha die entsprechenden Zeichen erstellen und dann nen Zeilenumbruch \n - danach die zweite Line usw...

ob das jetzt sonst so alles stimmt ... kein plan ;) - das mit den Zeichen musst du am Besten mal zu Fuß ausprobieren, wie das am schönsten aussieht - sprich im Texteditor mal untereinander hinmalen....

Achso und den Zeilenumbruch nicht in jeden case einfügen!!! Sonst wirst du ja wahnsinnig ;) - den kannst du auch in die forschleife einfügen - nach printDigitForRow
 
G

Guest

Gast
Danke erstmal!!!!! Hab das jetzt so gemacht:
Code:
for (int line = 1; line <= 4; line++) {
			printDigitForRow(operator,line);
			Out.println();
		}

Allerdings hab' ich jetzt ein neues Problem *seufz*... Der erste Buchstabe steht richtig da, ist jedoch mit dem zweiten vertauscht. Ab dem zweiten Buchstaben wiederholt er die Ausgabe. Ich zeig's am Besten mal:
z.B. "hase" ergibt bei mir:


Zeile : hase
-- | ||--|| |
| ||--|| |
|--|| |
| |
-- |__ | __|
|__ | __|
| __|
__|
-- | |- |__
| |- |__
|- |__
|__


Das schaut hier nicht so aus wie es sollte (verschiebt sich alles); wenn der text in Courier New im Microsoft Word angesehen wird, steht's so da wie auf meiner Konole... Sorry... :oops:

Danke nochmal!!
 
G

Guest

Gast
Erstmal sorry für den Doppelpost; das mit Courier New klappt doch nicht.... Kann ich hier irgendwie Bilder einfügen?? Ich komm nicht drauf...
 

Leroy42

Top Contributor
Anonymous hat gesagt.:
Zeile : hase
Code:
-- |  ||--||  |
|  ||--||  |
|--||  |
|  |
 -- |__    | __|
|__    | __|
   | __|
 __|
 -- |   |-  |__
|   |-  |__
|-  |__
|__

Hast du das gemeint?

Hilf mir jetzt auch nich wirklich viel weiter. ???:L
 

André Uhres

Top Contributor
So sieht's schon ein wenig besser aus:
Code:
package text;
/*
 * HaseTest.java
 */
import java.io.*;
public class HaseTest {
    public static void main(String[] args) {
        char choice;
        char operator;
        do {
            System.out.println("Zeile : ");
            StringBuilder zeile = new StringBuilder();
            operator = In.readChar();
            while (In.done()) {
                zeile.append(operator);
                operator = In.readChar();
            }
            String zeileS = zeile.toString();
            for (int line = 1; line <= 4; line++) {
                for (int i = 0; i < zeileS.length(); i++) {
                    char c = zeileS.charAt(i);
                    printDigitForRow(c,line);
                }
                System.out.println();
            }
            // Ending or not
            System.out.println(" Wollen Sie weitermachen (j/n)? ");
            choice = In.readChar();
            In.readChar();
            System.out.println();
        } while (choice == 'j');
    }
    static void printDigitForRow(char operator, int line){
        switch (line){
            case 1:
                if(operator == 'a' || operator == 'b' || operator == 'c' || operator == 'e' || operator == 'f' || operator == 'g'
                        || operator == 'o' || operator == 'p' || operator == 'q' || operator == 'r' || operator == 's')
                    System.out.print(" -- ");
                if(operator == 'd')
                    System.out.print(" -  ");
                if(operator == 'h' || operator == 'i' || operator == 'k' || operator == 'l' || operator == 'm' || operator == 'n'
                        || operator == 'u' || operator == 'v' || operator == 'w' || operator == 'x' || operator == 'y')
                    System.out.print("    ");
                if(operator == 'j')
                    System.out.print("   -");
                if(operator == 't' || operator == 'z')
                    System.out.print(" ---");
                break;
            case 2:
                if(operator == 'a' || operator == 'b' || operator == 'h' || operator == 'o' || operator == 'p' || operator == 'q'
                        || operator == 'r' || operator == 'u')
                    System.out.print("|  |");
                if(operator == 'c' || operator == 'e' || operator == 'f' || operator == 'g' || operator == 'l')
                    System.out.print("|   ");
                if(operator == 'd')
                    System.out.print("| | ");
                if(operator == 'i' || operator == 'j')
                    System.out.print("  | ");
                if(operator == 'k')
                    System.out.print("| / ");
                if(operator == 'm')
                    System.out.print("|'\'/|");
                if(operator == 'n')
                    System.out.print("|'\' |");
                if(operator == 's')
                    System.out.print("|__ ");
                if(operator == 't')
                    System.out.print("  | ");
                if(operator == 'v')
                    System.out.print("'\'   /");
                if(operator == 'w')
                    System.out.print("'\'     /");
                if(operator == 'x' || operator == 'y')
                    System.out.print(" '\' /");
                if(operator == 'z')
                    System.out.print("   /");
                break;
            case 3:
                if(operator == 'a' || operator == 'h')
                    System.out.print("|--|");
                if(operator == 'b')
                    System.out.print("| -|");
                if(operator == 'c' || operator == 'l')
                    System.out.print("|   ");
                if(operator == 'd' || operator == 'm' || operator == 'o' || operator == 'q' || operator == 'u')
                    System.out.print("|  |");
                if(operator == 'e' || operator == 'f')
                    System.out.print("|-  ");
                if(operator == 'g')
                    System.out.print("| -|");
                if(operator == 'i' || operator == 'j' || operator == 's' || operator == 't')
                    System.out.print("  | ");
                if(operator == 'k')
                    System.out.print("|/  ");
                if(operator == 'n')
                    System.out.print("| '\'|");
                if(operator == 'p' || operator == 'r')
                    System.out.print("| -- ");
                if(operator == 'v')
                    System.out.print(" '\' / ");
                if(operator == 'w')
                    System.out.print(" '\' / / ");
                if(operator == 'x' || operator == 'y')
                    System.out.print("  / ");
                if(operator == 'z')
                    System.out.print("  / ");
                break;
            case 4:
                if(operator == 'a' || operator == 'h' || operator == 'm' || operator == 'n')
                    System.out.print("|  |");
                if(operator == 'b' || operator == 'g' || operator == 'o' || operator == 'u')
                    System.out.print("|__|");
                if(operator == 'c' || operator == 'e' || operator == 'l')
                    System.out.print("|__ ");
                if(operator == 'd')
                    System.out.print("|_| ");
                if(operator == 'f' || operator == 'p')
                    System.out.print("|   ");
                if(operator == 'i' || operator == 't')
                    System.out.print("  | ");
                if(operator == 'j' || operator == 's')
                    System.out.print(" __|");
                if(operator == 'k' || operator == 'r')
                    System.out.print("| '\' ");
                if(operator == 'q')
                    System.out.print("|__'\'");
                if(operator == 'v')
                    System.out.print("  '\'  ");
                if(operator == 'w')
                    System.out.print("  '\' '\'  ");
                if(operator == 'x')
                    System.out.print(" / '\'");
                if(operator == 'y')
                    System.out.print(" /  ");
                if(operator == 'z')
                    System.out.print(" /__");
        }
    }
}
class In{
    private static boolean done;
    public static char readChar(){
        char ch =' ';
        try {
            ch = (char)System.in.read();
            done = true;
        } catch (IOException ex) {
            done = false;
            ex.printStackTrace();
        }
        if(ch == '\n'){
            done = false;
        }
        return ch;
    }
    public static boolean done() {
        return done;
    }
}
 

Marco13

Top Contributor
Man könnte in Erwägung ziehen, die ganzen
if (operator == 'a' || ....) ...
if (operator == 'b' || ....) ...
if (operator == 'c' || ....) ...
zu schreiben als
if (operator == 'a' || ....) ...
else if (operator == 'b' || ....) ...
else if (operator == 'c' || ....) ...

oder gleich als switch:
Code:
switch (operator)
{
    case 'a':
    case 'b':
        System.out.println("...");
        break;

    case 'c':
    case 'd':
        System.out.println("...");
        break;

Die kompake, elegante Alternative wäre ein
String rows[4][26];
der passend gefüllt ist ... :cool:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Tetris-Segment "malen" Java Basics - Anfänger-Themen 7
B Segment vollständig befüllen Java Basics - Anfänger-Themen 2
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
Z Fehler Zeiterfassungsprogramm Anzeige Java Basics - Anfänger-Themen 3
W Wiederkehrende Konsolen-Anzeige mit do-While?! Java Basics - Anfänger-Themen 33
Elyt Würfel mit bildlicher Anzeige Java Basics - Anfänger-Themen 2
S JavaFX-Arduino Kommunikation mit LCD-Anzeige Java Basics - Anfänger-Themen 0
A Anzeige Fehler auf anderem Gerät Java Basics - Anfänger-Themen 1
T Anzeige, wie lange es noch dauert bis ein File gesendet ist. Java Basics - Anfänger-Themen 2
Hijo2006 Anzeige eines Bildes in JAR Java Basics - Anfänger-Themen 12
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
TheSorm Anzeige fehler eines Buttons Java Basics - Anfänger-Themen 3
C Erste Schritte Berechnen einer Form mit Live anzeige.... Java Basics - Anfänger-Themen 4
H pdf-Anzeige Java Basics - Anfänger-Themen 11
J Anzeige erneuern, wie geht das? Java Basics - Anfänger-Themen 6
S ListModel - Anzeige im JList Java Basics - Anfänger-Themen 4
FetterOtter JTable: ToolTipText-Anzeige abhängig von Zellengröße und Textlänge Java Basics - Anfänger-Themen 2
S Probleme bei der Gui Anzeige Java Basics - Anfänger-Themen 11
S JPanel anzeige Java Basics - Anfänger-Themen 2
K Erste Schritte prob anzeige Java Basics - Anfänger-Themen 4
P Labyrinth, Backtracking, verzögerte Anzeige Java Basics - Anfänger-Themen 15
G JTextField() Anzeige - if-Anweisungen Java Basics - Anfänger-Themen 2
1 Combobox anzeige Java Basics - Anfänger-Themen 7
F grafische Anzeige von Werten Java Basics - Anfänger-Themen 2
D DB Anzeige der Treffer Java Basics - Anfänger-Themen 12
Weiti Anzeige von komponenten erst bei Mouse-Over Java Basics - Anfänger-Themen 3
S Zeitpunkt für die Anzeige von setBackground Java Basics - Anfänger-Themen 2
H Klassen zur Anzeige ines Bildes und zum Zeichnen innerhalb diese Bildes Java Basics - Anfänger-Themen 2
B double Rundungsfehler od. Anzeige-Fehler? Java Basics - Anfänger-Themen 4
D GUI Anzeige fehlt Java Basics - Anfänger-Themen 4
C Probleme mit Exportieren einer jar-datei /keine Anzeige mehr Java Basics - Anfänger-Themen 5
hdi Konsole basteln -> wie die Anzeige des Inhalts realiseren Java Basics - Anfänger-Themen 3
B Arbeitsspeicher-Verbrauch bei Anzeige eines 10MP-Bildes Java Basics - Anfänger-Themen 11
G Problem mit Anzeige der Tabelle Java Basics - Anfänger-Themen 3
G Ebenen Verwaltung und Anzeige Problem Java Basics - Anfänger-Themen 6
G JFileChooser - Anzeige beschleunigen Java Basics - Anfänger-Themen 2
O Anzeige von Zeichen in einer JList Java Basics - Anfänger-Themen 5
B Java - Anzeige beim Refresh weiss Java Basics - Anfänger-Themen 11
T Keine Anzeige in JList Java Basics - Anfänger-Themen 18
B unvollständige Anzeige von JComboBox Werten Java Basics - Anfänger-Themen 5
C Taschenrechner -> Anzeige/Variablen Problem Java Basics - Anfänger-Themen 9
S JTextArea Problem mit Anzeige Java Basics - Anfänger-Themen 2
A Datei einlesen und Inhalt in verschidenen JList anzeige? Java Basics - Anfänger-Themen 3
G Array anzeige nur letzter wert Java Basics - Anfänger-Themen 2
M Keine Anzeige, wenn ich die Classe umbenenne Java Basics - Anfänger-Themen 13
V Problem mit der Anzeige einer paint-Methode in einem Panel Java Basics - Anfänger-Themen 2
G Problem mit JPanel, bekomme keine Anzeige! Java Basics - Anfänger-Themen 4
I Classpath Anzeige Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben