2012-10-22 44 views
11

Đây là mã của tôi bên dưới và nó in J = 74, A = 65 và M = 77. Làm cách nào để tôi in ra các ký tự K, B, N như là kết quả của việc di chuyển xuống bảng chữ cái?Chuyển mã ASCII thành char trong 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 + "."); 

Trả lời

14

Đơn giản chỉ cần đúc int để char

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

Hãy coi chừng, đây là một nỗ lực thô tại một ngây thơ vấn đề (hoặc ít nhất là một xấu nói một). Dòng cuối cùng của đoạn trích của bạn đã chứa mọi thứ bạn cần. Có lẽ bạn chỉ bỏ lỡ char trong Java thực sự là một kiểu số nguyên, vì vậy bạn có thể sử dụng char literals với những hoạt động như + hoặc thậm chí %

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

Bạn có nghĩa là gì?

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

Có lẽ bạn có nghĩa là 'C++'? – Dunes

+0

@Dunes yes ...;) –

+4

Thế kỷ 21 "lập trình viên thực" có thể viết 'C++ 'bằng bất kỳ ngôn ngữ nào. :-) –

6

Tôi nghĩ bạn đã đưa ra câu trả lời cho chính mình. Bạn nên truyền số nguyên thành char như bên dưới

int j=77; 
    char c=(char)j; 
    System.out.println(c); 
Các vấn đề liên quan