【问题标题】:Why are my values being joined together when getting them from a class?为什么我的价值观在从课堂上获得时会结合在一起?
【发布时间】:2019-06-09 10:57:09
【问题描述】:

我正在从文本文件中读取数据,然后将每一行存储在一个类中,然后将每个类存储在一个 ArrayList 中。

例如,在我从文本文件中读取每一行之后,我将值存储在一个类中。

例如:

while((line = reader.readLine()) != null){
    line1 = line;                
    line2 = reader.readLine();
    line3 = reader.readLine();
    line4 = reader.readLine();
    line5 = reader.readLine();
    line6 = reader.readLine();
    line7 = reader.readLine();


Person tempPerson = new Person(line1, line2, line3, line4, line5, line6, line7);
person_list.add(tempPerson);

但是当我得到第 6 行的值时:

Person tempPerson = person_list.get(0);
out.print(tempPerson.getLine6());

输出的值与line7合并,例如'line7line6'。

除了我要求获取第 7 行之外,所有其他行都运行良好。

即使我尝试从另一个“人”那里获取详细信息,同样的问题也会出现在同一个地方。

我尝试了新的文件阅读器,但这并没有帮助,而且在检查调试器时,值被正确存储在类中。

因此,我没有使用 ArrayList,而是尝试将它们存储在 Array 中,但这似乎也没有帮助。

我一直在查看我的 getter 和 setter 是否存在问题,但我似乎找不到问题。

【问题讨论】:

  • 您是静态导入System 并以这种方式使用out.print 吗?如果你想在单独的行上打印每个值,你想使用println
  • 所以当您查看 tempPerson 中的调试时,所有字符串对象都有正确的值??
  • @Mark 'out' 是与'System.out' 不同的类,它在JSP 页面上显示输出。我也把它改成了'println',没有区别。
  • @ygbgames 是的,这是正确的
  • 在这种情况下,如果您已经覆盖了 person 的 toString 方法并且当您在控制台上打印它时。那就是打印所有的行,因为它们是红色的吗??

标签: java class arraylist text-files


【解决方案1】:

我在您的源代码中发现了两个问题:

  • 您只检查第一行,如果它已定义 ((line = reader.readLine()) != null) => 所以您不知道该行是否存在/已被正确读取
  • 您使用print,而不是println,后者会在末尾添加一个换行符

如果您提供源示例,将更容易检查。

【讨论】:

  • 它回答了你的问题吗?
猜你喜欢
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 2019-12-04
  • 2023-01-16
  • 2020-08-30
  • 2015-09-05
相关资源
最近更新 更多