java - 如何调试运行但不停止的程序?

标签 java

我编写了一个程序来按升序和降序对数字进行排序。这是输出:

"Enter numbers to sort" input numbers {4 3 2 6}

"Type 'A' for Ascending order 'B' for descending order" input A output: 2 3 4 6

该程序运行时会给出正确的输出,但它不会在命令提示符下自动退出。当我按 ctrl-c 时,我收到一条消息“线程“main”中出现异常”。

我试图找出我出错的地方有一段时间了,但没有成功。

代码:

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter numbers to sort");
        String str = in.nextLine();
        String[] splitted = str.trim().split("\\s+");
        int len = splitted.length;
        int a[] = new int[len];
        for (int i = 0; i < len; i++) {
            a[i] = Integer.parseInt(splitted[i]);
        }
        boolean TryAgain = true;
        System.out.println("How to sort: Type 'A' for Ascending and 'B' for Descending order");

        while (TryAgain=true) {

            char SortType = in.next().charAt(0);

            if (SortType == 'A' || SortType == 'a' || SortType == 'B' || SortType == 'b') {// first if

                if (SortType == 'A' || SortType == 'a') {// second if loop
                    // code for sorting in Ascending order
                    for (int j = 0; j < len - 1; j++) {
                        for (int k = 0; k < len - j - 1; k++) {
                            if (a[k] > a[k + 1]) {
                                int n = a[k];
                                a[k] = a[k + 1];
                                a[k + 1] = n;
                            } // for
                        } // for
                    } // if
                    System.out.println("Numbers sorted in Ascending order:");
                    for (int m = 0; m < len; m++) {
                        System.out.print(a[m] + " ");
                    } // for
                    TryAgain = false;
                } // second if loop


                else {// second else
                        // code for sorting in Dscending order
                    for (int j = 0; j < len - 1; j++) {
                        for (int k = 0; k < len - j - 1; k++) {
                            if (a[k] < a[k + 1]) {
                                int n = a[k];
                                a[k] = a[k + 1];
                                a[k + 1] = n;
                            } // for
                        } // for
                    } // if
                    System.out.println("Numbers sorted in Dscending order:");
                    for (int m = 0; m < len; m++) {
                        System.out.print(a[m] + " ");
                    } // for
                    TryAgain = false;
                } // second else loop
            } // first if loop

            else {// first else
                TryAgain = true;
                System.out.println("Invalid input");
                System.out.println("Type 'A' for Ascending and 'B' for Descending order:");
            } // first else loop

        } // while loop


    }// main
}// class

最佳答案

while(TryAgain=true) 更改为 while(TryAgain),这样 true 就不会分配给 TryAgain 并让 while 语句查看 TryAgain 的值。

关于java - 如何调试运行但不停止的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35812463/

相关文章:

java - 曲线内带有控制点的贝塞尔曲线

Java线程生成相同的值

java - Android 写入文件时出现 NullPointerException

java SimpleDateFormat 模式与参数不同

java - 为什么不能通过方法分配 "null"对象

java - AndEngine 和@override 错误

java - 在任意位置放置形状

java - 在 Spring Boot 中将属性放在 application.yml 或 bootstrap.yml 上有什么区别?

java - 创建 Hibernate 类型以使用 PostgreSQL 保存 JSONObject

java - 重命名文件而不使用 renameTo() - Java