2012-10-22 15 views
11

Oto mój kod poniżej i wypisuje J = 74, A = 65 i M = 77. Jak mogę go wydrukować tylko znaki K, B, N w wyniku przesunięcia alfabetu?Konwersja kodu ASCII na char w Javie

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 + "."); 

Odpowiedz

14

Wystarczy odlewania int do char

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

Uważaj, to jest surowy próba naiwnej problemu (lub przynajmniej złego mówi jeden). Ostatni wiersz Twojego fragmentu zawiera już wszystko, czego potrzebujesz. Może tylko przegapić char w Javie jest naprawdę rodzaj całkowitą, dzięki czemu można używać char literały z operatorami jak + lub nawet %

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

masz na myśli?

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

Być może masz na myśli 'C++'? – Dunes

+0

@Dunes yes ...;) –

+4

"prawdziwy programista" XXI wieku może napisać "C++" w dowolnym języku. :-) –

6

Myślę, że już dałeś odpowiedź na pytanie. Powinieneś rzucić liczbę całkowitą, by opisać poniżej:

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