中点总和Prob。 22“ - 我没有得到正确答案,因为我不明白”xxxxx.x“是什么意思

时间:2011-05-31 23:20:29

标签: java math

我正试图解决这个练习Problem 22只是为了加强我的解决技巧。我已经编写了答案。任务要求“所有y坐标值的总和是多少?”(以xxxxx.x形式输入小数作为小数(我不明白这意味着什么))。我的答案是50616.0,但这是错误的。  我希望你能帮助我。我不知道我做错了,或者只是我不明白任务在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();

    }
}

2 个答案:

答案 0 :(得分:1)

他们希望结果采用“xxxxx.x”形式,即点前5位数,后点1位数。你的答案是不正确的,因为它是一个整数,而他们想要一个浮点数。

答案 1 :(得分:0)

我认为你的错误是在这一行引入的:

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

如果两个Y坐标的总和为奇数,/2将截断.5。就像这条线一样:

170,509|341,54

您为此计算281,但中点的Y坐标为281.5

我建议将所有数字解析为浮点变量,并将中间结果存储到浮点变量中。标准double应该有尾数来准确处理这个数据集。