Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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_Debugging - Fatal编程技术网

奇迹Java不可能的代码?

奇迹Java不可能的代码?,java,debugging,Java,Debugging,这是我的一个编程竞赛中的一段代码,很混乱,我没有做任何更改。让你看看奇迹 MainClass.java 输入: 二, 九, A1、A4、A6、B1 注: 对于输入,我不能给你们比赛的真实输入,因为他们不允许我们这样做,所以我只给出一些工作输入 在月食中, 查看我的断点,在这些行中断,并调试它,第一次迭代就可以了。但是,在第二次迭代中,断点的第二行将运行两次!!!两次然后抛出异常。是的,中间的代码将运行两次!!! 我正在为整个比赛解决这个令人难以置信的问题。我已经编写了7年的程序,这是我有生以来第

这是我的一个编程竞赛中的一段代码,很混乱,我没有做任何更改。让你看看奇迹

MainClass.java

输入:

二,

九,

A1、A4、A6、B1

注: 对于输入,我不能给你们比赛的真实输入,因为他们不允许我们这样做,所以我只给出一些工作输入

在月食中, 查看我的断点,在这些行中断,并调试它,第一次迭代就可以了。但是,在第二次迭代中,断点的第二行将运行两次!!!两次然后抛出异常。是的,中间的代码将运行两次!!!
我正在为整个比赛解决这个令人难以置信的问题。我已经编写了7年的程序,这是我有生以来第一次看到如此巨大的史诗般的未知错误。

您当然可以在“窗口>首选项>Java>调试”中选择“对未捕获的异常暂停执行”,因此调试器会在您的线路上停止两次:一次是因为断点,有一次是因为ArrayIndexOutOfBoundsException。

这是一个竞争,所以代码可能很混乱,不可读,但请注意这个BUG!我将EclipseLuna与jdk1.8一起使用。您所说的第二行断点将运行两次,这一点并不清楚。戴上帽子并不能让事情变得更清楚,只是看起来你在大喊大叫。请正确设置代码格式,澄清代码,并在理想情况下将其简化为一个标准。此外,请解释这是否只是Eclipse调试器中看到的行为,或者是否有一些意外的输出。这里有问题吗?这是一台计算机,我认为它不会做任何你不告诉它的事情。如果Eclipse调试器没有使用最新版本的代码,单步走可能会显示出这种行为。另外,您可能会收到一个数组,非常感谢。您是正确的,这是调试器设置的问题。我在30分钟内完成了这个问题,剩下的2小时30分钟是关于这个调试器问题的工作。
import java.util.*;

public class MainClass {

    private static Scanner scan = new Scanner(System.in);
    private static Scanner scanText = new Scanner(System.in);

    private static int[][] list;
    private static int row, col;

    private static int lazyCode = 0;

    public static void main(String[] args) {

        col = scan.nextInt();
        row = scan.nextInt();

        list = new int[row][col];
        for (int i = 0; i < row; ++i) {
            for (int j = 0; j < col; ++j) {
                list[i][j] = 0;
            }
        }

        ArrayList<ArrayList<Point>> lazyList = new ArrayList<ArrayList<Point>>();

        String line = scanText.nextLine();
        Scanner temp_scan = new Scanner(line).useDelimiter(",");

        while (temp_scan.hasNext()) {

            String str = temp_scan.next().toString();

            char isLazy = str.charAt(str.length() - 1);

            if (isLazy == '*') {

                lazyList.add(new ArrayList<Point>());
                Point p = findNextSeat();

                int lc = lazyCode;
                list[p.r][p.c] = lc + 10;
                lazyList.get(lc).add(p);
                lazyCode++;

            } else {

                char character = str.charAt(0);
                int temp = character - 65;
                int temp2 = Integer.parseInt(str.substring(1)) - 1;
                System.out.println();// ------------------------BreakPointHere
                int x = list[temp][temp2];// ------------------------BreakPointHere
                System.out.println();// ------------------------BreakPointHere
                if (x == 0) {
                    list[temp][temp2] = 1;
                } else {
                    Point p = findNextSeat();

                    int lc = list[temp][temp2] - 10;
                    list[temp][temp2] = 1;
                    list[p.r][p.c] = lc + 10;
                    lazyList.get(lc).add(p);
                }
            }
        }

        for (int i = 0; i < lazyList.size(); ++i) {
            for (int j = 0; j < lazyList.get(i).size(); ++j) {
                Point p1 = lazyList.get(i).get(j);
                char c1 = (char) (p1.c + 65);
                if (i == lazyList.size() - 1 && j == lazyList.get(i).size() - 1) {
                    System.out.print(c1 + p1.r + ",");
                } else {
                    System.out.print(c1 + p1.r);
                }
            }
            System.out.println();
        }
    }

    private static class Point {
        Point(int i1, int i2) {
            r = i1;
            c = i2;
        }
        int r;
        int c;
    }

    private static Point findNextSeat() {
        for (int r = 0; r < row; ++r) {
            for (int c = 0; c < col; ++c) {

                if (list[r][c] == 0) {
                    return new Point(r, c);
                }
            }
        }
        return null;
    }

}