Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在-1-1输入不工作时终止程序_Java - Fatal编程技术网

Java 在-1-1输入不工作时终止程序

Java 在-1-1输入不工作时终止程序,java,Java,我正在做一些ICPC编程问题,这是Collatz。我得到的输出与预期输出相符。但是,当程序按照所需的-1-1输入时,我一直无法让程序结束 样本输入 3 100 34 100 75 250 27 2147483647 101 304 101 303 -1 -1 预期产量 Case 1: A = 3, limit = 100, number of terms = 8 Case 2: A = 34, limit = 100, number of terms = 14 Case 3: A =

我正在做一些ICPC编程问题,这是Collatz。我得到的输出与预期输出相符。但是,当程序按照所需的-1-1输入时,我一直无法让程序结束

样本输入

3 100
34 100
75 250
27 2147483647
101 304
101 303
-1 -1
预期产量

Case 1: A = 3, limit = 100, number of terms = 8 

Case 2: A = 34, limit = 100, number of terms = 14 

Case 3: A = 75, limit = 250, number of terms = 3  

Case 4: A = 27, limit = 2147483647, number of terms = 112

Case 5: A = 101, limit = 304, number of terms = 26 

Case 6: A = 101, limit = 303, number of terms = 1
Java代码

import java.util.Scanner;
import java.lang.Integer;

public class Collatz {
    private static int caseNumber = 0;

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
            caseNumber++;
            int a = in.nextInt();
            Integer limit = in.nextInt();
            if(a == -1 && limit == -1)
                break;
            int numberOfTerms = 0;
            for(Integer value = a; value != 1; numberOfTerms++){
                if(value%2 == 0){
                    value /= 2;
                }else{
                    value = 3 * value + 1;
                }
                if(limit < value)
                    break;
            }
            numberOfTerms +=1;
            System.out.println("Case " + caseNumber + ": A = " + a + ", limit = "
                    + limit + ", number of terms = " + numberOfTerms);
            System.out.println();

        }
    }
}

运行Eclipse3.7.2中的代码并在控制台窗口中输入值,它运行正常并按预期终止。i、 e.当输入两次“-1”时

程序未终止的可能原因:

扫描程序根据系统的默认字符集将字节转换为字符。您的系统字符集是否会导致'-1'转换为预期值以外的值

您输入'-1'值的方式是否可以是向输入流添加一个或多个尾随字符,从而导致扫描仪读取除-1以外的值


尝试在每次in.nextInt调用后添加print语句,以查看生成的值。

是否可以发布您获得的实际输出。然后我们可以猜到它可能会在哪里阻塞?这实际上给了我正确的输出。我遇到的问题是程序没有终止。我不同意你的代码。这对我来说很好,并且会终止。你是如何运行它的?您是否尝试添加调试语句以查看while循环等的迭代次数?它现在似乎对我有效,但它仍然不会终止,除非在所有操作运行后我按enter键