zxvser 2022-04-09 14:05 采纳率: 40%
浏览 26

随机访问文件RandomAccessFile

img


public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
RandomAccessFile rf =new RandomAccessFile("D:/Primenumber.txt","rw");
for(int n=2;n<=100;n++){
boolean flag=true;
for(int i=2;i<n;i++){
if(n%i==0){
flag=false;
break;
}
}
if(flag==true){
rf.writeInt(n);
}
}
rf.seek(5);
System.out.println(rf.readInt());
rf.close();

    for(int n=100;n<=500;n++){
        boolean flag=true;
        for(int i=2;i<n;i++){
            if(n%i==0){
                flag=false;
                break;
        }
        }
        if(flag==true){
            rf.seek(rf.length());
            rf.writeInt(n);
        }
    }
}

}
我的疑问:
1.读出第五个素数不是把文件指针定位到5吗?可我读出来时却不是素数
2.100到500的素数如何追加进去?
3.请用通俗易懂的词语,不要用专业术语,我还是个刚学Java的学生

  • 写回答

1条回答 默认 最新

  • a5156520 2022-04-09 18:30
    关注

    输出第5个素数,要先从文件中读取到第5个素数,然后输出,所以首先要先把2-100的素数输入到文件,下面使用的是writeInt()方法写入一个Int和readInt()方法读入一个int,所以素数文本文件不能直接打开直接看出有哪些素数,必须使用代码来看,修改如下:

    
    public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
            
            //写入2-100的素数
            RandomAccessFile rf =new RandomAccessFile("f:\\Primenumber.txt","rw");        
             for(int n=2;n<=100;n++){
                    boolean flag=true;
                    for(int i=2;i<n;i++){
                        if(n%i==0){
                            flag=false;
                            break;
                    }
                    }
                    if(flag==true){
                        rf.writeInt(n);
                    }
                }
             
             rf.close();
             
            //执行题目内容 
            rf =new RandomAccessFile("f:\\Primenumber.txt","rw");         
            int j =0;
            int result  ;
            try {
                
                while(true) {
                    result = rf.readInt();
                    j++;
                    if(j==5) {  //打印第5个素数
                        System.out.println(result);
                    }
                }
                
            }catch(EOFException e) {  //发生这个异常,正常情况是读取到文件结尾了,所以可以在这时追加100-500的素数
                //追加100-500的素数
                 for(int n=100;n<=500;n++){
                        boolean flag=true;
                        for(int i=2;i<n;i++){
                            if(n%i==0){
                                flag=false;
                                break;
                        }
                        }
                        if(flag==true){
                            rf.writeInt(n);
                        }
                    }
            }
            
            
            
        
        
               
                
                rf.close();
            }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月9日

悬赏问题

  • ¥15 ul做导航栏格式不对怎么改?
  • ¥20 用户端如何上传图片到服务器和数据库里
  • ¥15 现在研究生在烦开题,看了一些文献,但不知道自己要做什么,求指导。
  • ¥15 vivado封装时总是显示缺少一个dcp文件
  • ¥100 pxe uefi启动 tinycore
  • ¥15 我pycharm运行jupyter时出现Jupyter server process exited with code 1,然后打开cmd显示如下
  • ¥15 可否使用carsim-simulink进行四轮独立转向汽车的联合仿真,实现四轮独立转向汽车原地旋转、斜向形式、横移等动作,如果可以的话在carsim中如何进行相应设置
  • ¥15 Caché 2016 在Java环境通过jdbc 执行sql报Parameter list mismatch错误,但是同样的sql使用连接工具可以查询出数据
  • ¥15 疾病的获得与年龄是否有关
  • ¥15 opencv.js内存,CPU飙升