2012-10-22 12 views
11

Ecco il mio codice qui sotto e stampa J = 74, A = 65 e M = 77. Come faccio a stampare solo i caratteri K, B, N come risultato del movimento verso il basso dell'alfabeto?Conversione di codice ASCII in char in Java

BufferedReader buff = new BufferedReader(new InputStreamReader(System.in)); 
String string = JOptionPane.showInputDialog(" Please Enter Code "); 

for (int i = 0; i < string.length(); ++i) { 
    char c = string.charAt(i); 
    int j = (int)c; 
} 


System.out.println("ASCII OF "+c +" = " + j + "."); 

risposta

14

Semplicemente colata int a char

System.out.println((char) 65);  // A 
System.out.println((char) ('A' + 1)); // B 
System.out.println((int) 'A');  // 65 

Attenzione, questo è un tentativo grezzo in un ingenuo problema (o almeno una cattiva parlato uno). L'ultima riga del tuo snippet contiene già tutto ciò di cui hai bisogno. Forse ti manca solo che char in Java è davvero un tipo intero, in modo da poter utilizzare char letterali con operatori come + o anche %

System.out.println((char) ('Z' + 5)); 
System.out.println((char) ('Z'/2)); 
System.out.println((char) ('Z' % 31)); 
3

vuoi dire?

for (int i = 0; i < string.length(); ++i) { 
    char c = string.charAt(i); 
    c++; // next character. 
    System.out.print(c); 
} 
+2

Forse vuoi dire 'C++'? – Dunes

+0

@Dunes yes ...;) –

+4

Un "vero programmatore" del 21 ° secolo può scrivere 'C++' in qualsiasi lingua. :-) –

6

Penso che tu abbia già dato la tua risposta in questione. Dovresti convertire il numero intero in grass come sotto

int j=77; 
    char c=(char)j; 
    System.out.println(c);