Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 该代码在哪里失败?两种方法之间的差异_Java_Arrays - Fatal编程技术网

Java 该代码在哪里失败?两种方法之间的差异

Java 该代码在哪里失败?两种方法之间的差异,java,arrays,Java,Arrays,下面是我在一个编码站点中使用的代码。如果我取消注释第一条注释,代码工作正常,但是如果我取消注释第二条代码而不是第一条,代码会产生错误的结果。 我不知道这两者有什么区别。在我看来两者都一样。 请帮助我找到使用第二种方法失败的输入 Scanner input = new Scanner(System.in); int T = input.nextInt(); while (T-- > 0) { int N = input.nextInt();

下面是我在一个编码站点中使用的代码。如果我取消注释第一条注释,代码工作正常,但是如果我取消注释第二条代码而不是第一条,代码会产生错误的结果。 我不知道这两者有什么区别。在我看来两者都一样。 请帮助我找到使用第二种方法失败的输入

    Scanner input = new Scanner(System.in);
    int T = input.nextInt();

    while (T-- > 0) {
        int N = input.nextInt();
        int C = input.nextInt();
        int[] A = new int[N];

        // if I use like this code gets accepted
        // for (int i = 0; i < N; i++) A[i] = input.nextInt();

        int K = 0;

        while (C > 0 && K < N) {

            // if I use like this code produces wrong result
            // A[K] = input.nextInt();
            C -= A[K];
            K++;
        }

        String answer = "";

        if (C < 0 || K < N) answer = "No";
        else answer = "Yes";

        System.out.println(answer);
    }

    input.close();
扫描仪输入=新扫描仪(System.in);
int T=input.nextInt();
而(T-->0){
int N=input.nextInt();
int C=input.nextInt();
int[]A=新的int[N];
//如果我像这样使用,代码就会被接受
//对于(inti=0;i0&&K
这是问题的链接

在第一种情况下,我首先初始化所有数组元素,然后执行检查逻辑


在第二种方法中,我正在初始化并同时使用该值(控件可能跳出循环,并且我不必初始化每个元素)

第二种方法在C之后停止读取值。这两行不可能完全相同。循环条件完全不同。清楚地解释你想做什么。@VarunMukundhan我已经添加了一个问题的链接。@Andreas但是C,N和a将在下一次初始化test@Andreas这很有帮助。我只是检查个别案例,这给了我正确的输出。