为了账号安全,请及时绑定邮箱和手机立即绑定

如何为类中的 ArrayList 赋值?

如何为类中的 ArrayList 赋值?

潇湘沐 2021-12-22 18:59:05
很长一段时间以来,我一直无法弄清楚为什么您似乎无法在不出错的情况下为 ArrayList 赋值。第一个代码块是主要方法,它从文本文件中逐行获取并使用分隔符拆分行。第一个字符串作为 long 存储在一个变量中,然后其他 9 个字符串存储在一个 ArrayList 中。它对文件中的每一行执行此操作。我已经多次调试这段代码,它表明数组正在获得正确的值。问题是当代码到达它调用插入的部分时,我已经在代码中注释过了。它首先创建节点,但是当它到达要将第一个 ArrayList 中的值添加到新创建的 ArrayList 的部分时,一切都中断了。for 循环停止正常运行,即使达到限制,它也会继续增加。我决定省略我也用于这个项目的 BinaryTree 类,因为它可以正常工作。那么我将如何正确分配来自我传递给 Node ArrayList 的 ArrayList 的值?package assignment7;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.PrintWriter;import static java.lang.Long.parseLong;import java.util.Scanner;import java.util.ArrayList;public class Assignment7 {    public static void main(String[] args) throws IOException {    boolean headerLine = true;    String firstLine = "";    String catchLine;    String token;    long s_cid;    ArrayList<String> Arr = new ArrayList<String>();    Scanner delimS;    int count = 0;    BinaryTree snomedTree = new BinaryTree();    try(BufferedReader br = new BufferedReader(new FileReader("Data.txt"))) {        while ((catchLine = br.readLine()) != null) {            for(int i = 0; i < 9; i++){                Arr.add("");            }            if(headerLine){                firstLine = catchLine;                headerLine = false;            }            else{                delimS = new Scanner(catchLine);                delimS.useDelimiter("\\|");                s_cid = parseLong(delimS.next());                while(delimS.hasNext()){                    token = delimS.next();                    Arr.set(count, token);                    count++;                }//运行到这里然后这个插入函数被调用                  snomedTree.insert(new Node(s_cid, Arr));            }            Arr.clear();        }    }    try (PrintWriter writer = new PrintWriter("NewData.txt")) {        writer.printf(firstLine);        snomedTree.inorder(snomedTree.root, writer);    }}}
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

它现在完美无缺。


我将 Node 类更改为:


package assignment7;


import java.util.ArrayList;

import java.util.List;



class Node {


    public long cid;

    public ArrayList<String> Satellite;

    public Node l;

    public Node r;


    public Node(long cid, ArrayList<String> Sat) {


    this.Satellite = new ArrayList<String>(Sat.subList(0, Math.min(9, Sat.size())));

    this.cid = cid;



    }


}

我还确保在每次迭代后将 main 中的“count”变量改回 0。


查看完整回答
反对 回复 2021-12-22
?
FFIVE

TA贡献1797条经验 获得超6个赞

public Node(long cid, ArrayList<String> Sat) {

    this.Satellite = new ArrayList<String>();

    this.cid = cid;

    for(int i = 0; i < Sat.size()-1; i++){


        Satellite.add(Sat.get(i));


    }


}

这里 0<9 是错误的,你得到了什么错误?


查看完整回答
反对 回复 2021-12-22
  • 2 回答
  • 0 关注
  • 415 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号