高手们帮我看小这个java小程序怎么改!!

importjava.io.*;publicclassNumber3{/*编写一个Java应用程序,利用RandomAccessFile类,把几个int型整数(1,2,3... import java.io.*;
public class Number3 {

/*编写一个Java应用程序,利用RandomAccessFile类,
把几个int型整数(1,2,3,4,5,6,7,8,9,10)写入到一个名字为tom.dat文件中,
然后按相反顺序读出这些数据并显示在屏幕上。(注意,一个int型数据占4个字节)*/

public static void main(String[] args) {
int[]bytes={1,2,3,4,5,6,7,8,9,10};
try {
RandomAccessFile r=new RandomAccessFile("c:\\a.txt","rw");
for(int i=0;i<bytes.length;i++){
r.writeChars(bytes[i]+"");

}
long p = r.getFilePointer();
for(int i=1;i<11;i++){
//System.out.println(p);
r.seek(p-i*2);

System.out.print(r.readChar());}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

这样的输出结果是 0198765432 我怎么保证10 不被分成01输出????

我刚申请的就20分。。。希望能得到答案!
【要用skipBytes,这才是相对定位,按字节来读,每次4个,所以就不会把10分开了】
我觉得很对,可是我之前是按char型存入的。用这个skipBytes总会出异常。。。能不能详细的帮我改下!!
展开
 我来答
lovepetrel
2009-10-22 · TA获得超过1531个赞
知道小有建树答主
回答量:857
采纳率:100%
帮助的人:0
展开全部
你还是没有注意到括号后边那句话:(注意,一个int型数据占4个字节)
为什么告诉你一个int型占四个字节,你要是把10分成1和0了,还是按字节读的么?
所以别用seek(),它是绝对定位
要用skipBytes,这才是相对定位,按字节来读,每次4个,所以就不会把10分开了
程序你自己改改吧

授之以鱼不如授之以渔,还是给你个思路:

你可以这样,定义一个二维数组,分别把1-10转为字节型的放倒书数组里,然后通过你的指针定位到最后四个,在转回int,指针在前移,自己想想,不难的,自己写总比我写出来给你看的好
具体的转换可以参考
1. public byte[] intToByte(int i) {
2. byte[] bt = new byte[4];
3. bt[0] = (byte) (0xff & i);
4. bt[1] = (byte) ((0xff00 & i) >> 8);
5. bt[2] = (byte) ((0xff0000 & i) >> 16);
6. bt[3] = (byte) ((0xff000000 & i) >> 24);
7. return bt;
8. }
9. public static int bytesToInt(byte[] bytes) {
10. int num = bytes[0] & 0xFF;
11. num |= ((bytes[1] << 8) & 0xFF00);
12. num |= ((bytes[2] << 16) & 0xFF0000);
13. num |= ((bytes[3] << 24) & 0xFF000000);
14. return num;
15. }
20...5@qq.com
2009-10-22 · TA获得超过390个赞
知道答主
回答量:250
采纳率:0%
帮助的人:289万
展开全部
int[]bytes={1,2,3,4,5,6,7,8,9,10};
try {
RandomAccessFile r=new RandomAccessFile("c:\\a.txt","rw");
for(int item:bytes) r.writeInt(item);
long p = r.getFilePointer();
for(int i=(int)p;i>0;i=i-4){
r.seek(i-4);
System.out.print(r.readInt());
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
woommy
2009-10-22 · TA获得超过363个赞
知道答主
回答量:113
采纳率:0%
帮助的人:64.6万
展开全部
你输出到文件中时根本没有加分隔符,现在不用说计算机往回读的时候会把0和1分开,就是你让另一个人读12345678910这样一串数他也不知道到底是10还是1和0啊,唯一的办法就是加上分隔符,如1,2,3,4,5,6,7,8,9,10这样就不会存在歧义了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式