2013-05-22 4 views
23

Ich möchte mich im Voraus für meine unglaubliche Newb-Ness in Bezug auf Java und Programmierung im Allgemeinen entschuldigen. Aber ich habe überall nach einer Antwort gesucht und ich kann einfach keine finden.Ich kann nicht herausfinden, warum DrJava keine Unicode-Symbole ausgeben wird

Also versuche ich einfach folgendes auszuführen:

public class WriteSquares2 
{ 
    public static void main(String[] args) 
    { 
    for (int i=1; i<=10; i++) 
    { 
     System.out.println(i + " \u2261 " + (i % 7) + " modulo 7"); 
    } 
    } 
} 

Der Unicode-Zeichen \ u2261 ist die Kongruenz Zeichen (≡). DrJava zeigt die folgende als Ausgabe:

1 ? 1 modulo 7 
2 ? 2 modulo 7 
3 ? 3 modulo 7 
4 ? 4 modulo 7 
5 ? 5 modulo 7 
6 ? 6 modulo 7 
7 ? 0 modulo 7 
8 ? 1 modulo 7 
9 ? 2 modulo 7 
10 ? 3 modulo 7 

Was ist das seltsamste ist, dass, wenn ich einfach

'\u2261' 

in die Wechselwirkungen Feld eingeben, ich die Gleichwertigkeit Zeichen in einfachen Anführungszeichen:

'≡' 

Ich habe versucht, einfach '\ u2261' in den Code statt "\ u2261" zu setzen, aber dann bekomme ich Zeug wie dieses:

8803 modulo 7 
8805 modulo 7 
8807 modulo 7 

Ich versuchte auch einfach nur das Unicode-Zeichen in den Code einzufügen, aber das gab nur eine Fehlermeldung. Kann jemand herausfinden, was vor sich geht oder was ich falsch mache? Deine Hilfe ist sehr Willkommen.

[Ich sollte hinzufügen, dass dies keine Hausaufgabe oder so etwas ist, da unser Buch kaum Unicode erwähnt - nur versucht, das herauszufinden ... und als ich anfing, dachte ich nicht, dass es das wäre schwer!]

EDIT: Ich benutze Mac OS 10.7.5 und Dr. Java sagt, dass sein Build "drjava-20120818-r5686" ist.

EDIT # 2: Hier ist ein Screenshot mit Monospaced 12 als Hauptschriftart. Es erscheint immer noch als Fragezeichen, obwohl ich die Konsole dazu bringen kann, mir das Symbol zurückzugeben, wenn ich es direkt eintippe, aber mit einfachen Anführungszeichen.

enter image description here

+0

Es funktioniert für mich, ohne ein Problem, wenn ich in eclipse überprüft. Drjava nicht haben .... – Thihara

+2

Es ** funktioniert ** nicht für mich, als ich Eclipse eincheckte. Habe auch keinen drjava; du bist nicht allein: S – Craig

+3

Vielleicht hat die Schriftart, die auf deinem System verwendet wird, keine Glyphe für dieses Zeichen? –

Antwort

0

Haben Sie Ihre prompte zur Ausgabe in Unicode geändert. (Anmerkung Java Standard in der Englisch sprechenden Welt ist IS0-8859-1).

+0

Ich bin mir nicht sicher, was du meinst. Mit Prompt meinst du im Dr Java Konsolenfenster? Ich habe in allen Menüs nachgeschaut und keine Erwähnung von Unicode gefunden. Es scheint so eine einfache Sache ... –

8

Das Problem hat mit der Schriftart zu tun, die Sie verwenden, es ist kein Problem mit Ihrem Code. Siehe DrJavas Einstellungen unter Edit > Preferences > Display Options > Fonts > Main Font.

DrJava unter Verwendung der Standardschriftart (Monospace 12) auf Linux: DrJava on Linux with "Main Font" set to default (Monospaced 12)

DrJava eine andere Schriftart (PT Sans 12) auf Linux mit: DrJava on Linux with "Main Font" set to "PT Sans 12"

Beiden Screenshots von der gleichen Instanz DrJava sind; Ich musste es nicht einmal schließen. Beachten Sie, dass das Symbol in dem Bereich Interaktionen für meine Schriftart Monospaced korrekt ist und ein allgemeiner Platzhalter für PT Sans ist. Das gleiche passiert in der Registerkarte Konsole (nicht gezeigt).

+1

Die spezifische monospaced Schriftart ist DejaVu Sans Mono. –

+0

Vielen Dank für die Antwort. Es ergab für mich einen Sinn und ich dachte, es würde funktionieren, aber leider, als ich die Schriftart in Monospaced 12 änderte, bekam ich immer noch Fragezeichen anstelle von Kongruenzsymbolen. Jetzt bin ich wirklich nicht sicher, was los ist ... –

+0

(Ich habe einen Screenshot zu meinem ursprünglichen Beitrag hinzugefügt.) –

2

habe ich eine wenig Forschung, und ich fand eine Lösung, die vor here

Also in diesem Fall von einer anderen Frage gefunden wurde, könnte es etwas ähnliches sein. Nicht wirklich Ihr Code, aber die Art, wie DrJava Unicode abhängig von Ihrem System handhabt.Die Zeichencodierung hängt vom System ab. Abhängig von Ihrer Box können die 16 Bits der UTF-16-Codierung (die 9794 ist), die hohen 8 Bits (die 38 sein würden) oder, wie in., Gedruckt werden Ihr Fall ist der untere 8 Bit (die 66).

9794/256 = 38 
9794 % 256 = 66 

"

Verwandte Themen