请参阅Converting Letters to Numbers
在文件test.in.rtf
中,我输入了'abcd‘。但是,当我运行该程序时,我得到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);
}
}
发布于 2012-05-19 06:36:21
我很确定你想要
sb.append(Integer.toString(c - 'a' + 1));
或者简单地说
sb.append( c - 'a' + 1 );
它隐式地做了同样的事情,因为表达式c - 'a' + 1
被隐式地强制转换为int
,因为Java通过首先将所有内容转换为short
s来执行所有非char
整数运算(涉及char
s、byte
s、short
s和/或int
s的任何内容)。
您已经将整数结果转换为char
,它将由ASCII值是该数字的字符表示( b/w 1和26),这是不可读的东西。
发布于 2012-05-19 06:42:33
你正在尝试写字符值1,2,3和4 ('a'-'a‘+1=1等等),它们都是“不可写的”,因此是“?”。为什么你得到的是7而不是4?我不知道-可能是一个地区问题,或者其中3个只是写成两个"?“。
https://stackoverflow.com/questions/10660510
复制相似问题