Java 无限循环,因为obj.hasNext()

Java 无限循环,因为obj.hasNext(),java,loops,while-loop,Java,Loops,While Loop,我正在努力解决这个问题。以下是输入: 95.123 12 0.4321 20 5.1234 15 6.7592 9 98.999 10 1.0100 12 因为我不知道有多少行输入将作为 我使用了跟随while循环 Scanner obj = new Scanner(System.in); while(obj.hasNext()){ double tmp1 = obj.nextDouble(); int tmp2 = obj

我正在努力解决这个问题。以下是输入:

95.123 12
0.4321 20
5.1234 15
6.7592  9
98.999 10
1.0100 12
因为我不知道有多少行输入将作为 我使用了跟随while循环

Scanner obj = new Scanner(System.in);


        while(obj.hasNext()){
            double tmp1 = obj.nextDouble();
            int tmp2 = obj.nextInt();
            System.out.println(tmp1+" "+tmp2);

        }
它读取数据,我的问题是控制永远不会脱离循环

如果问题链接不可用,则问题说明如下:

In case link for problem becomes unavailable, following is statement
of problem

Description  

Problems involving the computation of exact values of very large
magnitude and precision are common. For example, the computation of
the national debt is a taxing experience for many computer systems. 

This problem requires that you write a program to compute the exact
value of Rn where R is a real number ( 0.0 < R < 99.999 ) and n is an
integer such that 0 < n <= 25. 

Input  

The input will consist of a set of pairs of values for R and n. The R
value will occupy columns 1 through 6, and the n value will be in
columns 8 and 9. 

Output

The output will consist of one line for each line of input giving the
exact value of R^n. Leading zeros should be suppressed in the output.
Insignificant trailing zeros must not be printed. Don't print the
decimal point if the result is an integer. Sample Input

95.123 12
0.4321 20
5.1234 15
6.7592  9
98.999 10
1.0100 12 

Sample Output

548815620517731830194541.899025343415715973535967221869852721            .00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201
若问题的链接不可用,以下是声明
有问题
描述
涉及计算非常大数值的精确值的问题
震级和精度是常见的。例如,计算
对于许多计算机系统来说,国债是一种累人的经历。
这个问题需要您编写一个程序来计算精确的
Rn的值,其中R是实数(0.0hasNext()
是阻塞操作。意思是直到

  • 溪流未关闭
  • 接收到表示流结束的数据
新数据可能会到达。这意味着,
hasNext
方法在收到关于它正在侦听的流状态的正确信息之前不能返回任何答案,这意味着它必须等待阻止控制流的任何信息

您应该考虑从<代码>系统中更改数据源。在(不关闭或不发送关于其数据末尾的信息)到包含文件结尾信息的文件。 因此,您的代码应该更像

Scanner sc = new Scanner(new File(pathToFile));
...

您可以输入使System.in接收EOF,这将结束循环。

您可能正在检查是否有输入。尝试执行以下操作。 我正在接受字符串类型数组的输入。如果没有字符串类型的输入,则while循环将继续运行

while(!obj.hasNext()){
    System.out.println("Invalid input");
    obj.next();
}
ar[i]=obj.next();

欢迎来到SO!请描述问题并包括链接。链接有时会坏掉,在这种情况下,这个问题就没有意义了。不允许使用文件,您可以建议其他解决方案吗?