【问题标题】:Java not returning values when reading text fileJava在读取文本文件时不返回值
【发布时间】:2015-05-28 18:24:16
【问题描述】:

Java 在读取文本文件时返回字符串值,但它只会为我的整数值返回“0”,为我的双精度值返回“0.0”。

  Cars car[] = new Cars[5];
  int cnt = 0;
  String line = inF.readLine();

  while(line != null){
     String[] field = line.split("\\s+");

     int yrData = Integer.parseInt(field[2]);
     double disData = Double.parseDouble(field[3]);

     car[cnt] = new Cars(field[0], field[1], yrData, disData);
     cnt++; 
     line = inF.readLine();
  }

  for(int i=0; i<cnt;  i++){
     System.out.println(i+1 +": "+ car[i]);
  }

示例: Java返回什么---> 1:名称:欧宝车型:Astra 年份:0 Disp:0.0

文本文件里有什么:Opel Astra 1997 2.8

这是我的构造函数:

Cars(String dataForName, String dataForModel, int dataForYear, double dataForDisp){name = dataForName; model = dataForModel; int year = dataForYear; double disp = dataForDisp;}

这是我的 toString 方法:

public String toString(){String s = "Name: "+name+" Model: "+model+" Year: "+year+" Disp: "+disp; return s;}

文本的分隔符是空格。

【问题讨论】:

  • 你可以为你的构造函数包含代码吗?这应该有效。
  • 对于toString 方法也是如此。
  • 文本的分隔符是什么?是空格(或)TAB(\t)吗?

标签: java arrays object text-files readline


【解决方案1】:

问题出在你的构造函数中:

Cars(String dataForName, String dataForModel, int dataForYear, double dataForDisp){
    name = dataForName; 
    model = dataForModel; 
    int year = dataForYear; 
    double disp = dataForDisp;
}

您在构造函数中声明了一个新变量yeardisp,而不是在类中设置字段。因此,这些值永远不会设置,因此它们分别使用默认值 00.0

改成

 Cars(String dataForName, String dataForModel, int dataForYear, double dataForDisp){
    name = dataForName; 
    model = dataForModel; 
    year = dataForYear; 
    disp = dataForDisp;
 }

应该可以。

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多