2013-05-22 14 views
23

Mi piacerebbe scusarmi in anticipo per la mia incredibile novità riguardo a Java e alla programmazione in generale. Ma ho cercato dappertutto una risposta a questo e proprio non riesco a trovarne uno.Non riesco a capire perché DrJava non genererà i simboli Unicode

così sto semplicemente cercando di eseguire il seguente:

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"); 
    } 
    } 
} 

Il carattere Unicode \ u2261 è il segno congruenza (≡). DrJava mostra la seguente come output:

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 

Che cosa è più strana di questo è che quando mi è sufficiente digitare

'\u2261' 

nella casella di interazioni, ho il carattere di equivalenza tra virgolette singole:

'≡' 

Ho provato semplicemente a inserire '\ u2261' nel codice invece di "\ u2261", ma poi ottengo cose del genere:

Ho anche provato semplicemente inserendo il codice unicode nel codice, ma questo ha appena dato un messaggio di errore. Qualcuno può capire cosa sta succedendo o cosa sto facendo male? Il tuo aiuto è molto apprezzato.

[Devo aggiungere che non si tratta di un compito a casa o altro, dato che il nostro libro menziona a malapena Unicode - solo cercando di capirlo ... e quando ho iniziato, non pensavo che sarebbe stato questo difficile!]

EDIT: Sto usando Mac OS 10.7.5 e Dr Java dice che la sua build è "drjava-20120818-r5686".

EDIT # 2: Ecco uno screenshot che utilizza Monospaced 12 come font principale. Si presenta ancora come punti interrogativi, anche se posso ottenere la console per restituirmi il simbolo se lo digito direttamente, ma con virgolette singole.

enter image description here

+0

funziona per me senza un problema quando ho controllato in Eclipse. Non ho drjava .... – Thihara

+2

It ** non funziona per me quando ho controllato in eclissi. Inoltre non avere drjava; non sei solo: S – Craig

+3

Forse il carattere utilizzato nel tuo sistema non ha un glifo per quel personaggio? –

risposta

0

Hai cambiato richiesto di output in unicode. (Nota di default Java nel mondo di lingua inglese è IS0-8859-1).

+0

Non sono sicuro di cosa intendi. Per prompt, intendi nella finestra della console di Dr Java? Ho cercato in tutti i menu e non ho trovato alcuna menzione di Unicode. Sembra una cosa così semplice ... –

8

Il problema ha a che fare con il font che stai utilizzando, non è un problema con il tuo codice. Vedi le impostazioni di DrJava sotto Edit > Preferences > Display Options > Fonts > Main Font.

DrJava font utilizzando predefinito (Monospaced 12) su Linux: DrJava on Linux with "Main Font" set to default (Monospaced 12)

DrJava utilizzando un carattere diverso (PT Sans 12) su Linux: DrJava on Linux with "Main Font" set to "PT Sans 12"

Entrambe le schermate sono dalla stessa istanza di DrJava; Non ho nemmeno dovuto spegnerlo. Si noti che nel riquadro Interazioni, il glifo è corretto per il mio carattere monospazio ed è un segnaposto generico per PT Sans. Lo stesso accade nella scheda Console (non mostrata).

+1

Il carattere specifico a spaziatura fissa è DejaVu Sans Mono. –

+0

Grazie per la risposta. Aveva senso per me e pensavo che avrebbe funzionato, ma sfortunatamente, quando ho cambiato il font in Monospaced 12, ho ancora dei punti interrogativi al posto dei simboli di congruenza. Ora non sono davvero sicuro di cosa stia succedendo ... –

+0

(Ho aggiunto uno screenshot al mio post originale.) –

2

ho fatto un po 'di ricerca, e ho trovato una soluzione che è stata trovata prima da un'altra domanda here

Quindi in questo caso, potrebbe essere qualcosa di simile. Non proprio il tuo codice, ma il modo in cui DrJava gestisce unicode a seconda del tuo sistema.

" Codifica caratteri dipende dal sistema. A seconda della scatola, esso può stampare i 16 bit della codifica UTF-16 (che è 9794), gli 8 bit (che sarebbe 38) o, in il vostro caso, gli 8 bit bassi (che è 66).

9794/256 = 38 
9794 % 256 = 66 

"

Problemi correlati