黑马程序员技术交流社区
标题:
为什么不行,求解!!!!!!!
[打印本页]
作者:
来自沙沙的我
时间:
2014-6-1 17:47
标题:
为什么不行,求解!!!!!!!
本帖最后由 来自沙沙的我 于 2014-6-1 22:13 编辑
import java.io.*;
public class Test3 {
public static void main(String[] args) throws IOException
{
BufferedReader dq=null;//引用变量
BufferedWriter sx=null;//引用变量
try
{
//创建输入流
dq=new BufferedReader(new InputStreamReader(System.in));
//创建输出流
sx=new BufferedWriter(new OutputStreamWriter(System.out));
char[] zw={'零','一','二','三','四','五','六','七','八','九'};
int i=0;
char[] sz=new char[200];
i=dq.read(sz);
int j=sz[0];
sx.write(j);//这个地方能够编写出J的数字
//sx.write(zw[j]); 那么为什么这个地方会报错?
}
catch(IOException e)
{
}
dq.close();
sx.close();
}
}
复制代码
作者:
Lin0411
时间:
2014-6-1 19:10
int j=sz[0]这句中得到的是阿拉伯数字对应的ascii码,这样0对应的就是48,依次类推。因此在执行sx.write(zw[j])会发生角标越界的异常,正确的做法是:int j=sz[0]-'0';这样取得的j角标就和阿拉伯数字对应起来了。
作者:
来自沙沙的我
时间:
2014-6-1 22:13
Lin0411 发表于 2014-6-1 19:10
int j=sz[0]这句中得到的是阿拉伯数字对应的ascii码,这样0对应的就是48,依次类推。因此在执行sx.write(zw ...
谢谢回复。
再问下,这个知识点在毕老师视频哪个章节里才会说到啊?
作者:
fenzheng
时间:
2014-6-1 22:34
char[i] 不应该等于一个int 的值,你弄错了,eclipse没有提示你package filetest;
import java.io.*;
public class Test3 {
public static void main(String[] args) throws IOException {
BufferedReader dq = null;// 读字符流
BufferedWriter sx = null;// 写字符流
try {
// 创建输入流
dq = new BufferedReader(new InputStreamReader(System.in));
// 创建输出流
sx = new BufferedWriter(new OutputStreamWriter(System.out));
//创建一个char类型的数组
char[] zw = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };
int i = 0;
char[] sz = new char[200];//一个200的缓冲区
i = dq.read(sz);//读到缓冲区 ,返回世纪读到的字符数,这里读到的是一个
char c = sz[0];
// sx.write(c);// 这个地方能够编写出J的数字
sx.write(c);// 那么为什么这个地方会报错?
} catch (IOException e) {
}
dq.close();
sx.close();
}
}
作者:
fenzheng
时间:
2014-6-1 22:36
你改成这样就好了,没有问题了,你得到的是阿斯卡码,阿斯卡码的话,嗯,你传给你的40多呢,而你世纪只读到了一个,写也只写一个,所以就会发生没有40多个的情况,就角标越界,其实这里你没有必要搞阿斯卡码的,你改成我这样就好了
作者:
fenzheng
时间:
2014-6-1 22:38
这个是毕老师讲基础,编码的时候,具体我也记得不清楚了
作者:
superob123
时间:
2014-6-1 23:21
错误有点多。
首先,int j=sz[0];这里目的应该是要得到char[] zw的角标,但你传的是字符,不是数字,那么它就会强转成字符对应编码表的数字。
还有就算得到正确的角标,还是注意下编码表的问题,因为是要输出汉字,java默认的编码表示gbk,如果是utf-8的话,有些汉字是3个字符表示的,有时候会得到乱码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2