WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 25.11.2004, 17:07   #11
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Wird wohl der Unterschied zwischen der DOS-Codepage 850 und der Windows Codepage 1252 sein:
DOS: 84h=312d
http://acspro.atari.org/KeyTab/Modern/006005.html
Win-1252 C4h=196
http://acspro.atari.org/KeyTab/Modern/006002.html
(Da kommen Retro Gefühle auf:
mode con codepage prepare=(850) )

Eine Lösung für dein Problem kenne ich leider auch nicht. Du könntest die DOS-Zeichen zu den erlaubten zeichen hinzufügen:
Code:
static boolean isLetter(char ch){
return Character.isLetter(char ch) || Character.getNumericValue(char ch)==132 || alle anderen Fälle
}
Die Lösung kann man noch ein bischen eleganter machen:
Code:
static boolean isLetter(char ch){
 int[] dosValues={132,142,148,...};
 int numVal=Character.getNumericValue(char ch);
 boolean isDosChar;
 for (int i=0; i<dosValues.length;i++){
  if(dosValues[i]==numVal){
   isDosChar=true;
   break;
  }
 }
 return isDosChar || Character.isLetter(char ch);
}
Es bleibt aber eher eine Krücke.
Gibt's eigentlich eine Funktion um zu schauen ob ein Element in einem Array enthalten ist? Das würde die for-Schleife sparen.

Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 25.11.2004, 20:06   #12
dietz
Senior Member
 
Registriert seit: 19.04.2001
Alter: 50
Beiträge: 165


Standard

Ich befürchte ich muß mit der Krücke leben.
Ja es gibt eine Funktion, die heisst indexOf().
indexOf('n') liefert z.B. das erste Vorkommen von Zeichen n.

Blöd ist das ich die Zeichen auch noch ausgeben muß. Da tu ich mir mit den DOS Codes schwer.
In Out.println kann ich nur Zeichen direkt in Hex- oder Oktalnotation ausgeben, und die Hexnotation von z.B. 132 ist 84 (\u0084 im Code) liefert mir wieder ein ? weil das System dieses nicht erkennt.

Zumindest weiß ich jetzt warum die Zeichen ] ~ usw funktionieren=> weil die alle in der ASCII Codierung vorkommen....hmmm...aber eh die Umlaute auch....*seisehrverwirrt*

Da kommt man manchmal zum verzweifeln...
dietz ist offline   Mit Zitat antworten
Alt 25.11.2004, 20:41   #13
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

indexOf ist für Strings.

Lösung für's Ausgeben:
Zwei Arrays, wobei im einen die Dos Werte stehen, im anderen die Unicode (an den selben Postionen, also z.B. a[0]=Wert von ä in Dos, b[0]=Wert von ä in Unicode.

Vielleicht findest du bei Google eine bessere Methode, mir fällt im Moment nichts besseres ein.
Code:
static boolean isLetter(char ch){
 int[] dosValues={132,142,148,...};
 int[] unicodeValues={228,...};
 int numVal=Character.getNumericValue(char ch);
 boolean isDosChar;
 char outputChar;
 for (int i=0; i<dosValues.length;i++){
  if(dosValues[i]==numVal){
   isDosChar=true;
    outputChar=unicodeValues[i];
    System.out.println(outputChar);
   break;
  }
 }
 return isDosChar || Character.isLetter(char ch);
}
Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 25.11.2004, 23:27   #14
Jaguar
Classic Car Driver
 
Benutzerbild von Jaguar
 
Registriert seit: 16.02.2000
Ort: Wien
Beiträge: 569

Mein Computer

Standard

Wenn du das Java Programm in einer Windows Konsole Eingabeaufforderung laufen hast, dann änder vorher mit:

chcp <codepagenummer>

die Codepage. Das ist eh ein alter Hut das die Eingabeaufforderung bei solch Consolenapplikationen Probleme mit den Sonderzeichen hat.

Also einfach mal vor dem Javaprogramm folgendes eingeben:

chcp 1252

und dann sollest auch in der Console der deutsche Zeichnsatz mit den Umlauten gehen.

Tipp: Im übrigen kann man das mit einer Batch-datei auch automatisieren, die dir vor dem Starten der Java Applikation zuerst mal die Codepage richtig setzt.
Jaguar ist offline   Mit Zitat antworten
Alt 28.11.2004, 01:00   #15
midas
Master
 
Registriert seit: 21.12.2002
Alter: 36
Beiträge: 606


midas eine Nachricht über ICQ schicken
Standard

Code:
 public static char readLineNonwhiteChar()
    {
        boolean done = false;
        String inputString = null;
        char nonWhite = ' ';//To keep the compiler happy.

        while (! done)
        {
            inputString = readLine();
            inputString = inputString.trim();
            if (inputString.length() == 0)
            {
                System.out.println(
                                "Your input is not correct.");
                System.out.println("Your input must contain at");
                System.out.println(
                              "least one nonwhitespace character.");
                System.out.println("Please, try again.");
                System.out.println("Enter input:");
            }
            else
            {
                nonWhite = (inputString.charAt(0));
                done = true;
            }
        }

        return nonWhite;
    }
Das hier benutzen wir auf der Uni, hoffe das hilft dir.
midas ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:58 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag