1
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
    BufferedReader in = new BufferedReader(new FileReader(new File(args[0])));
    String line;

    while ((line = in.readLine()) != null) {
        StringTokenizer st = new StringTokenizer(line);
        int len = st.countTokens();
        Double[] seq = new Double[len];
        for (int i = 0; i < len; i++)
            seq[i] = Double.parseDouble(st.nextToken());
        Arrays.sort(seq);
        for (int i = 0; i < len; i++) {
            if (i > 0) System.out.print(" ");
            System.out.print(seq[i]);
        } System.out.print("\n");
    }
}
}

所以我正在尝试解决这个 CodeEval 问题(https://www.codeeval.com/open_challenges/91/),而我的解决方案没有通过所有的测试用例。我认为我的输出方法是正确的(数字之间的空格,尾随换行符)。我无法弄清楚排序或其他任何地方可能发生了什么。

使用浮点数时,该解决方案显然也不正确。

4

3 回答 3

2

我也认为这是一个打印问题。根据示例 I/O,输出似乎要求每个数字恰好有3 个小数位。但是,如果您打印出 double like 70.920(示例输入之一),它将显示为70.92.

double d = 70.920;
System.out.println(d);
System.out.printf("%.3f", d);  // <-- try this
70.92
70.920

请注意第二个输出如何与示例输出的格式一致,而第一个则不是。

于 2013-07-31T17:01:51.397 回答
2

您可能正确排序但打印不正确。十进制数是近似表示的。运行时尝试以短格式显示它们,但这不能保证。

他们提供的所有示例都应该有效,但谁知道测试套件在后台做了什么。

于 2013-07-31T16:55:07.197 回答
1

我不会使用doubleDouble我只会在阅读全部内容后对值进行排序,而不是在每一行之后。

也许有些输入不止一行?

于 2013-07-31T16:55:15.563 回答