2011-11-24 51 views
1

編輯:想通了,放錯了地方的一段代碼從Java中的掃描儀讀取雙打不工作了

我有一個從文件計算斜坡的程序。該格式文件是在是這樣的:

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 

〜安德魯

+1

這裏需要應用基本故障排除技巧,看什麼,而它的運行代碼在做什麼。請使用調試器並逐步瀏覽,看看您正在從文件中讀取什麼,以及它爲什麼不符合您的期望。如果您不熟悉使用調試器,請添加一些'System.out.println()'語句。 –

回答

5

我會簡化代碼

Scanner sc = new Scanner(new FileReader(file)); 
SlopeSolver ss = new SlopeSolver(sc.nextDouble(), 
           sc.nextDouble(), sc.nextDouble(), sc.nextDouble()); 
sc.close(); 
1

使用fileScanner.nextDouble()閱讀double形式的用戶輸入,並fileScanner.nextInt()閱讀int

+0

當我這樣做時,我仍然得到0和NaN –