我的程序似乎写得很完美,但停止运行并允许用户输入没有扫描仪?

时间:2016-09-23 21:22:28

标签: java sorting compiler-errors java.util.scanner

第一次发布在这里。

我正在尝试创建一个比较快速排序,合并排序,冒泡排序和选择排序的类。我已经实现了所有的排序方法,并创建了一个随机数组方法,用1000个随机整数填充随机数组。但是,当我运行我的程序时,我的main方法在初始欢迎消息之后停止并允许用户输入。我将非常感谢任何帮助,我确信我错过了一些简单的错误。

<p id = "outputLaps"></p>

2 个答案:

答案 0 :(得分:1)

你的无限循环在bubbleSort:

public static int bubbleSort(int[] a)
{
    boolean hasSwapped = true;
    while (hasSwapped == true)
    {
        hasSwapped = false; // Need to set this to false
        for (int i = 0; i < a.length - 1; i++)
        {
            if (a[i] > a[i + 1]) // Needs to swap
            {
                int temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
                hasSwapped = true;
                bubbleCount++;
            }
        }
    }
    return bubbleCount;
}

答案 1 :(得分:1)

问题出在您的bubbleSort()方法中。 hasSwapped布尔值永远不会设置为false,因此while循环无限次。

您的代码中还有另一个问题。在main方法中,您必须将array方法返回的populateArray()分配回a。您在int[] select = a;方法中执行的main这样的分配不会执行您想要执行的操作。相反,只需将数组a发送到排序方法。

像这样:

int[] a = new int[1000];
a=populateArray(a);

testSelection = selectionSort(a);
testBubble = bubbleSort(a);
testQuick = quickSort(a,0,0);
testMerge = mergeSort(a);