[英]Converting Letters to Numbers 2
請參閱將字母轉換為數字
在文件test.in.rtf
,輸入了“ abcd”。 但是,當我運行該程序時,我得到了??? ??????????? ???????? plus maybe a few more
??? ??????????? ???????? plus maybe a few more
??? ??????????? ???????? plus maybe a few more
上test.out.rtf
??? ??????????? ???????? plus maybe a few more
。 為什么是這樣? 我想念什么嗎?
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;
public class Test {
public static void main(String[] args) throws IOException {
BufferedReader f = new BufferedReader(new FileReader("test.in.rtf"));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out.rtf")));
StringTokenizer st = new StringTokenizer(f.readLine());
StringBuilder sb = new StringBuilder();
for (char c : st.nextToken().toCharArray()) {
sb.append((char)(c - 'a' + 1));
}
out.println(sb); // output result
out.close(); // close the output file
System.exit(0);
}
}
我很確定你要
sb.append(Integer.toString(c - 'a' + 1));
或簡單地
sb.append( c - 'a' + 1 );
它隱式地做同樣的事情,因為表達式c - 'a' + 1
被隱式轉換為int
因為Java執行所有非long
整數數學(涉及char
, byte
s, short
s和/或int
的任何事情)首先將所有內容轉換為int
。
您將整數結果轉換為char
結果,這將由其ASCII值為該數字的字符表示(該數字為b / w 1和26),這是不可讀的。
您正在嘗試編寫char值1,2,3和4('a'-'a'+ 1 = 1,依此類推),它們都是“不可寫的”,因此是“?”。 為什么得到7而不是4? 我不知道-可能是語言環境問題,或者其中的3個只是寫為兩個“?”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.