在Java中从扫描仪读取双倍数据不起作用

在Java中从扫描仪读取双倍数据不起作用,java,java.util.scanner,Java,Java.util.scanner,编辑:找到了,错放了一段代码 我有一个从文件计算坡度的程序。文件的格式如下所示: Y2'空间'Y1'空间'X2'空间'X1'空间' 我使用扫描仪从文件中读取字符串,然后将其转换为双精度或整数。我这样做的原因是,它似乎只从字符串中读取文本文件中的双精度或整数。以下是我的一些代码: modelSlopes.clear(); modelValues.clear(); int returnVal = openFileChooser.showOpenDialog(this);

编辑:找到了,错放了一段代码

我有一个从文件计算坡度的程序。文件的格式如下所示:

Y2'空间'Y1'空间'X2'空间'X1'空间'

我使用扫描仪从文件中读取字符串,然后将其转换为双精度或整数。我这样做的原因是,它似乎只从字符串中读取文本文件中的双精度或整数。以下是我的一些代码:

 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