本帖最后由 长跑※终点 于 2014-8-6 01:32 编辑
请问下,运行下面的代码。输入:ABCDabcd 的结果是:[C@5e55ab。是什么原因?哪位知道原因的吗?告诉下我,先谢了。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Test7 {
public static void main(String[] args) {
System.out.println("请输入一串英文字母,并以回车进行转换");
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bfw = new BufferedWriter(new OutputStreamWriter(System.out));
String s;
try {
while((s = bfr.readLine())!=null){
//先将拿到的字符串给变成字符数组,将每个字母都给拆分开来。
char[] ch =s.toCharArray();
for(int i = 0; i<ch.length; i++){
//判断该字符是否是小写字母,是的话就变成大写,再写回字符数组。
if(ch>='a'&&ch<='z'){
ch = Character.toUpperCase(ch);
//判断该字符是否是大写字母,是的话就变成小写,再写回字符数组。
}else if(ch>='A'&&ch<='Z'){
ch = Character.toLowerCase(ch);
}
}
/------------------------------------------------------------------------------------------------------------------------------------------------
//就是这两行!!!!!!!!如果把这两行换成:bfw.write(ch);就正常了。这是什么原因呢?
//把输入流读取到的String转成char【】写入输出流就没有问题。
//但是把输入流读取到的String转成char【】,再转成String写入输出流就出问题了。好奇怪。
String a = ch.toString();
bfw.write(a);
/-------------------------------------------------------------------------------------------------------------------------------------------------
bfw.newLine();
bfw.flush();
}
} catch (IOException e) {
System.out.println("转换失败");
}
try {
bfr.close();
bfw.close();
} catch (IOException e) {
System.out.println("流关闭出错");
}
}
}
|
|