在Java中从扫描仪读取双倍数据不起作用
编辑:找到了,错放了一段代码 我有一个从文件计算坡度的程序。文件的格式如下所示: Y2'空间'Y1'空间'X2'空间'X1'空间' 我使用扫描仪从文件中读取字符串,然后将其转换为双精度或整数。我这样做的原因是,它似乎只从字符串中读取文本文件中的双精度或整数。以下是我的一些代码:在Java中从扫描仪读取双倍数据不起作用,java,java.util.scanner,Java,Java.util.scanner,编辑:找到了,错放了一段代码 我有一个从文件计算坡度的程序。文件的格式如下所示: Y2'空间'Y1'空间'X2'空间'X1'空间' 我使用扫描仪从文件中读取字符串,然后将其转换为双精度或整数。我这样做的原因是,它似乎只从字符串中读取文本文件中的双精度或整数。以下是我的一些代码: modelSlopes.clear(); modelValues.clear(); int returnVal = openFileChooser.showOpenDialog(this);
modelSlopes.clear();
modelValues.clear();
int returnVal = openFileChooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = openFileChooser.getSelectedFile();
try {
Scanner fileScanner = new Scanner(new FileReader(file));
int count = 1;
boolean suc = true;
while (fileScanner.hasNext()) {
suc = true;
double tmp1 = 0;
double tmp2 = 0;
double tmp3 = 0;
double tmp4 = 0;
try {
if(count == 1) {
tmp1 = Double.valueOf(fileScanner.next());
}
if(count == 2) {
tmp2 = Double.valueOf(fileScanner.next());
}
if(count == 3) {
tmp3 = Double.valueOf(fileScanner.next());
}
if(count == 4) {
tmp4 = Double.valueOf(fileScanner.next());
}
} catch (NumberFormatException e) {
try {
if(count == 1) {
tmp1 = Integer.valueOf(fileScanner.next());
}
if(count == 2) {
tmp2 = Integer.valueOf(fileScanner.next());
}
if(count == 3) {
tmp3 = Integer.valueOf(fileScanner.next());
}
if(count == 4) {
tmp4 = Integer.valueOf(fileScanner.next());
}
} catch(NumberFormatException e1) {
suc = false;
}
}
if(suc) {
if(count != 4) {
count++;
}
if(count == 4) {
count = 1;
SlopeSolver tmpS = new SlopeSolver(Double.valueOf(tmp1), Double.valueOf(tmp2), Double.valueOf(tmp3), Double.valueOf(tmp4));
modelSlopes.addElement(tmpS.getSlope());
modelValues.addElement("Y2 - " + String.valueOf(tmp1) + "; Y1 - " + String.valueOf(tmp2) + "; X2 - " + String.valueOf(tmp3) + "; X1 - " + String.valueOf(tmp4));
}
}
}
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "Error opening or with file");
}
} else {
}
执行此操作时,坡度和值显示为0。我似乎无法让它工作。我对java还不熟悉,现在我很无知。任何帮助都将不胜感激
以下是我从中读取数据的文本文件:
0.0 2.0 0.0 1.0
~Andrew使用fileScanner.nextDouble读取用户输入的双重格式,使用fileScanner.nextInt读取int。使用fileScanner.nextDouble读取用户输入的双重格式,使用fileScanner.nextInt读取int。我会简化代码
Scanner sc = new Scanner(new FileReader(file));
SlopeSolver ss = new SlopeSolver(sc.nextDouble(),
sc.nextDouble(), sc.nextDouble(), sc.nextDouble());
sc.close();
我会简化代码
Scanner sc = new Scanner(new FileReader(file));
SlopeSolver ss = new SlopeSolver(sc.nextDouble(),
sc.nextDouble(), sc.nextDouble(), sc.nextDouble());
sc.close();
您需要在这里应用基本的故障排除技能,并查看代码在运行时正在执行的操作。或者使用调试器并逐步执行,查看您从文件中读取的内容以及为什么它不是您期望的内容。如果您不熟悉调试器的使用,请添加一些System.out.println语句。您需要在此处应用基本的故障排除技巧,并查看代码在运行时所执行的操作。或者使用调试器并逐步执行,查看您从文件中读取的内容以及为什么它不是您期望的内容。如果您不熟悉使用调试器,请添加一些System.out.println语句。当我这样做时,我仍然得到0和NaN。当我这样做时,我仍然得到0和NaN