gpt4 book ai didi

java - 当我没有填写数组列表中对象的所有值时,如何防止我的 java 代码给出错误消息?

转载 作者:行者123 更新时间:2023-12-01 10:28:38 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,它可以读取文本文件并根据数据(除其他外)创建对象的数组列表。大部分文本都非常直接,由两个双数字组成,如下所示:
454.56 3.4
3321.7.0023
但是,某些文本行末尾缺少数字,仅包含一个 double 值,如下所示:
3222.5
这是我迄今为止所拥有的代码的简化版本:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class objectGenerator {
public double firstDouble;
public double secondDouble;

objectGenerator(double 1, double 2) {
firstDouble = 1;
secondDouble = 2;
}

public static void main(String[] args) {

String fileName = "data.txt";
Scanner inputStream = null;
try {
inputStream = new Scanner(new File(fileName));
} catch (FileNotFoundException e) {
System.out.println("Error opening the file " +
fileName);
System.exit(0);
}

List<objectGenerator> objects = new ArrayList<objectGenerator>();
while (inputStream.hasNextLine()) {
String line = inputStream.nextLine();
String[] data = line.split(" ");
objectGenerator object = new objectGenerator(Double.parseDouble(data[0]), Double.parseDouble(data[1]));
objects.add(object);
}
inputStream.close();
//example text file
//544.7 7.4
//34.5

}

}

运行以下代码将产生错误消息,因为文本文件在第二行末尾缺少 double 值。我不确定如何解决这个问题,并且希望能得到任何帮助。

作为旁注,如果我有某种方法可以在填充数组列表时为文本文件留下的空白空间填充默认值,那将非常有益。我将使用的最终文本文件可能包含数百行代码,因此如果有一种方法在我创建对象时为所有空白空间填充默认值,那就太好了。

最佳答案

以下是我重构 while 循环的方法:

static final double DEFAULT_DATA = -1d;   // replace with your desired default value

while (inputStream.hasNextLine()) {
String line = inputStream.nextLine();
String[] data = line.split(" ");

objectGenerator object = null;

if (data.length == 1 && data[0].equals("")) { // empty line
object = new objectGenerator(DEFAULT_DATA, DEFAULT_DATA);
}
else if (data.length == 1) { // only one number
object = new objectGenerator(Double.parseDouble(data[0]), DEFAULT_DATA);
}
else { // two numbers
object = new objectGenerator(Double.parseDouble(data[0]),
Double.parseDouble(data[1]));
}

// you may want to check if (object == null) here to cover any weird edge cases
objects.add(object);
}

顺便说一下,Java 命名约定规定类名的首字母应大写。因此,我会将类的名称更改为 ObjectGenerator,并使用大写的 O

关于java - 当我没有填写数组列表中对象的所有值时,如何防止我的 java 代码给出错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35216759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com