Harden先生 2022-01-20 22:07 采纳率: 25%
浏览 71
已结题

java读取数据出现问题,一直重复读取

问题遇到的现象和发生背景

我用java构建了一个结构体,在读取数据的时候一直重复读取文件中的部分内容

问题相关代码,请勿粘贴截图

class shuju{
private int grade = 0;

private String leixing,lianmeng,qiudui,qiuxing;


public shuju(){}

public shuju(String leixing, String lianmeng,String qiudui,String qiuxing, int grade){

    this.leixing = leixing;

    this.lianmeng = lianmeng;
    this.qiudui = qiudui;
    this.qiuxing = qiuxing;

    this.grade = grade;

}

public void setleixing(String leixing) { this.leixing = leixing; }
public void setlianmeng(String lianmeng) { this.lianmeng = lianmeng; }
public void setqiudui(String qiudui) { this.qiudui = qiudui; }
public void setqiuxing(String qiuxing) { this.qiuxing = qiuxing; }


public void setGrade(int grade) { this.grade = grade; }

public String getleixing() { return leixing; }
public String getlianmeng() { return lianmeng; }
public String getqiudui() { return qiudui; }
public String getqiuxing() { return qiuxing; }


public int getGrade() { return grade; }

}
public class 尝试1 {
private static final int INFINITE = 1000000000;// 对于该题相当于无穷大
private static shuju[] sj ;// 保存所有平台
public static void main(String[] args) throws IOException{

    Scanner sc1 = new Scanner(System.in);
    int n;
    int zz=1;
    n = sc1.nextInt();
    //到时候如果有问题看这里
    sj=new shuju[n+1];
    shuju s =new shuju();
    s.setGrade(1);
    String filePath = "D:/a/b";
    File dir = new File(filePath);
    // 一、检查放置文件的文件夹路径是否存在,不存在则创建
    if (!dir.exists()) {
        dir.mkdirs();// mkdirs创建多级目录
    }
    File checkFile = new File(filePath + "/filename.txt");
    FileWriter writer = null;

    //读取文件的地方
    // 1.创建文件对象
    File fromFile = new File("D:/a/b/filename.txt");
    // 2.创建字符输入流
    Reader reader = null;
    try {
        reader = new FileReader(fromFile);
        // 3.循环读取(打印)
        int content = reader.read();
        int t=0;
        while (content != -1) {
            char aaa=(char)content;
            String bb ="";
            bb=bb+aaa;
            if(aaa==' ')
            {
                t++;
                bb="";
            }
            if(t==1)
            {
                while(content != -1)
                {
                    content = reader.read();
                    aaa=(char)content;
                    if(aaa==' ')
                        break;
                    bb=bb+aaa;
                }
                s.setleixing(bb);
                //System.out.println(s.getleixing());

            }
            if(t==2)
            {
                while(content != -1)
                {
                    content = reader.read();
                    aaa=(char)content;
                    if(aaa==' ')
                        break;
                    bb=bb+aaa;
                }
                s.setlianmeng(bb);
               // System.out.println(s.getlianmeng());
            }
            if(t==3)
            {
                while(content != -1)
                {
                    content = reader.read();
                    aaa=(char)content;
                    if(aaa==' ')
                        break;
                    bb=bb+aaa;
                }
                s.setqiudui(bb);
               // System.out.println(s.getqiudui());
            }
            if(t==4)
            {
                while(content != -1)
                {
                    content = reader.read();
                    aaa=(char)content;
                    if(aaa==' ')
                        break;
                    bb=bb+aaa;
                }
                s.setqiuxing(bb);
                //System.out.println(s.getqiuxing());
                t=0;
                sj[zz]=s;
              /*  if(zz==2)
                {
                    System.out.println(zz-1);
                    System.out.println(sj[zz-1].getleixing());
                    System.out.println(sj[zz-1].getlianmeng());
                    System.out.println(sj[zz-1].getqiudui());
                    System.out.println(sj[zz-1].getqiuxing());
                }*/
                System.out.println(zz);
                System.out.println(sj[zz].getleixing());
                System.out.println(sj[zz].getlianmeng());
                System.out.println(sj[zz].getqiudui());
                System.out.println(sj[zz].getqiuxing());
                zz++;

               // System.out.println(sj[zz-1].getqiuxing());
            }
            //System.out.println(bb);
            content = reader.read();
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        // 4.关闭流
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //读取数据写入结构体,这里一直重复读取
    for(int j=1;j<zz;j++)
    {
        System.out.println(j);
        System.out.println(sj[j].getleixing());
        System.out.println(sj[j].getlianmeng());
        System.out.println(sj[j].getqiudui());
        System.out.println(sj[j].getqiuxing());
    }

}

运行结果及报错内容

img


这是文件内容

img

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 关注

    //进行元素初始化即可
    if(t==4)
    {
    while(content != -1)
    {
    content = reader.read();
    aaa=(char)content;
    if(aaa==' ')
    break;
    bb=bb+aaa;
    }
    s.setqiuxing(bb);
    //System.out.println(s.getqiuxing());
    t=0;
    //加上这句,要初始化数组元素
    sj[zz]=new shuju();
    sj[zz]=s;
    /* if(zz==2)
    {
    System.out.println(zz-1);
    System.out.println(sj[zz-1].getleixing());
    System.out.println(sj[zz-1].getlianmeng());
    System.out.println(sj[zz-1].getqiudui());
    System.out.println(sj[zz-1].getqiuxing());
    }*/
    System.out.println(zz);
    System.out.println(sj[zz].getleixing());
    System.out.println(sj[zz].getlianmeng());
    System.out.println(sj[zz].getqiudui());
    System.out.println(sj[zz].getqiuxing());
    zz++;

               // System.out.println(sj[zz-1].getqiuxing());
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 已采纳回答 1月21日
  • 创建了问题 1月20日

悬赏问题

  • ¥15 wamp3.3.5安装完成后图标正常显示绿色,鼠标左右键点击图标均无反应。求解决方法。
  • ¥15 鼠标点击的这条记录了什么?
  • ¥15 在写pid调速的程序时,电机始终维持最大速度
  • ¥15 【有偿】调用DXGI截图初始化失败,提示0xf 887a0004
  • ¥15 请问如何查看手机root记录?
  • ¥15 商城小程序订单号重复
  • ¥15 学校优化算法sbo和蚁群算法怎么结合
  • ¥21 matlab怎么求时域信号的二阶导数
  • ¥15 判断两个表是否完全相同
  • ¥15 java map类型数据格式,如何快速通过前缀匹配元素