2011-05-31 61 views
0

我想解決這個練習Problem 22只是爲了加強我的解決技巧。我已經編寫了答案。任務要求「所有y座標值的總和是多少? (以xxxxx.x格式輸入數字作爲小數(我不明白這是什麼意思))。我的答案是50616.0,但它是錯誤的。 我希望你能幫助我。我不知道我是否做錯了,或者我不明白xxxxx.x中的任務意味着什麼,我認爲它是十進制的,不是?中點總和問題。 22「 - 我沒有得到正確的答案,因爲我不明白什麼意思是」xxxxx.x「我認爲

這是我的代碼:

import java.io.*; 
import java.math.BigDecimal; 

public class Problema22 { 

public static void main(String args[]) { 
    File archivo = null; 
    FileReader fr = null; 
    BufferedReader br = null; 


    try { 
     archivo = new File("C:\\plane22.txt"); 
     fr = new FileReader(archivo); 
     br = new BufferedReader(fr); 
     String linea; 
     int index = 0; 
     int num = 0; 
     String num2 = ""; 
     BigDecimal sol = BigDecimal.valueOf(0); 

     while ((linea = br.readLine()) != null) //System.out.println(linea); 
     { 
      //System.out.println(linea); 
      int line1 = linea.indexOf(","); 
      int line2 = linea.lastIndexOf(","); 
      int line3 = linea.indexOf("|"); 


      String y1 = linea.substring(line1+1, line3); 
      String y2 = linea.substring(line2+1, linea.length()); 

      long sumys = (Integer.parseInt(y1)+ Integer.parseInt(y2))/2; 

      sol = BigDecimal.valueOf(sumys).add(sol); 
      //System.out.println(sol); 





     } 

     System.out.println(sol); 

     //count((ArrayList<String>) arr); 

    } catch (Exception e) { 
     e.printStackTrace(); 

    } 
} 

回答

1

他們想要的結果的形式「xxxxx.x」,意爲點和一個後前5位。你的答案不正確,因爲它是一個整數,而他們想要一個浮點數。

+0

使用BigDecimal不會返回一個十進制的數字??我認爲digdecimal我會改變所有浮動,謝謝回答 – Yoan 2011-05-31 23:29:55

+0

我改變所有浮動和我的答案是50638.5,其正確的感謝 – Yoan 2011-05-31 23:31:04

+0

@Yoan,' BigDecimal''可以工作,如果你在每一步中都使用它,但其中一箇中間值被存儲在'long sumys'中。如果這是一個BigDecimal,並且該分區是用BigDecimal執行的,它應該完美地運行。 (儘管可能會慢一點。) – sarnold 2011-05-31 23:35:16

0

我認爲你的錯誤是在這一行介紹:

long sumys = (Integer.parseInt(y1)+ Integer.parseInt(y2))/2; 

/2將截斷.5如果兩個Y的總和座標爲奇數。因爲它是這一行:

170,509|341,54 

您計算281這一個,但中點的Y座標爲281.5

我建議將所有數字解析爲浮點變量並將中間結果存儲到浮點變量中。標準double應該有尾數來精確處理這個數據集。

+0

我已經這樣做了,我將所有更改爲浮動,並且我得到正確的答案,我認爲BigDecimal將返回一個帶有小數的數字,但不要感謝 – Yoan 2011-05-31 23:33:03

相關問題