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/)并且我的解决方案没有通过所有测试用例。我认为我的输出方法是正确的(数字之间的空格,尾随换行符)。我无法弄清楚排序或其他任何地方可能发生的事情。
使用花车时,解决方案显然不正确。
答案 0 :(得分:2)
您可能正确排序但打印不正确。十进制数近似表示。运行时尝试以短格式显示它们,但这不能保证。
他们提供的所有示例都应该有效,但谁知道测试套件在后台做了什么。
答案 1 :(得分:2)
我也认为这是一个印刷问题。根据样本I / O,输出似乎要求在每个数字上精确 3个小数位。但是,如果您打印出70.920
(其中一个示例输入)之类的双重内容,则会显示为70.92
。
double d = 70.920;
System.out.println(d);
System.out.printf("%.3f", d); // <-- try this
70.92 70.920
注意第二个输出如何与样本输出的格式一致,而第一个输出不是。
答案 2 :(得分:1)
我会使用double
而不是Double
我只会在读完所有内容之后对值进行排序,而不是在每一行之后。
也许某些输入有多行?