import java.io.*;
public class Prueba {
static int index = 0;
static double[] l = new double[131072];
public static void main(String args[]) throws IOException {
StreamTokenizer str = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
while (((str.nextToken() != StreamTokenizer.TT_EOF))) {
if (str.ttype == StreamTokenizer.TT_NUMBER) {
l[index++] = str.nval;
//System.out.println(str.nval);
// System.out.println(l[0]);
// System.out.println(l[1]);
}
}
solve();
}
public static void solve() {
double res;
for (int i = index - 1; i >= 0; i--) {
res = Math.sqrt(l[i]);
System.out.println(String.format("%.4f\n", res));
}
}
}
答案 0 :(得分:4)
您正在阅读标准输入,并且您的代码会循环,直到获得TT_EOF
。要将TT_EOF
提供给您的计划,如果您使用的是Unix,则需要按Ctrl-D
;如果您使用的是Windows,则需要Ctrl-Z
后跟Enter
。
答案 1 :(得分:3)
你正在等待System.in,它在读取时阻塞,ergo,你永远不会得到EOF所以你循环将继续等待输入。
答案 2 :(得分:1)
实际上,您需要从命令行管道传输文件,或者在控制台上输入文本,然后输入EOF字符。按Ctrl + Z在Windows中生成EOF,按Ctrl + D在Unix / Linux中生成EOF。
编辑:如果您的输入是单行,则可以检查TT_EOL而不是TT_EOF。 在进入循环之前,您必须致电eolIsSignificant(true)。这将确保行尾被视为单独的令牌