打印0而不是键盘输入

时间:2013-04-26 01:19:00

标签: java

因此该程序应允许用户输入10个分数,并在下一行按升序打印这些分数。由于某种原因,它允许我输入分数,但是下面的行只是填充0而不是按升序对输入进行排序。我不知道为什么,但任何输入都会有所帮助。

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);

    System.out
            .println("Enter up to 35 scores between 0 and 100, -1 to stop:");

    int[] score = new int[35];
    int count = 0;
    int sum = 0;
    String scores = "";

    for (int i = 0; i < score.length; i++) {
        score[i] = keyboard.nextInt();
        if (score[i] >= 0) {

            scores = scores + score[i] + "     ";
            count++;
            sum = sum + score[i];
        } else
            i = score.length + 1;

    }

    for (int i = 1; i < score.length; i++) {
        int x;
        int temp;

        x = score[i];
        temp = score[i];
        for (x = i - 1; x >= 0 && score[x] > temp; x--) {
            score[x + 1] = score[x];
        }
        score[x + 1] = temp;
    }

    System.out.printf("The %d scores you entered are: \n%s", count, scores);
    System.out.println();
    System.out.printf("The %d scored sorted in nondecreasing order are:\n",
            count);
    int k=1;
    for (k=1; k <= count; k++) {
        if (k % 11 == 0) {
            System.out.println();
        } else {
            System.out.printf("%5d", score[k]);
        }
    }

    for (int i = 1; i <= count; i++) {
        if (i % 11 == 0) {
            System.out.println();
        } else {
            System.out.printf("%5d", score[i]);
        }

        for (int j = 1; j < count; j++) {
            if (Integer.compare(score[i], score[j]) < 0) {
                int temp = score[i];
                score[i] = score[j];
                score[j] = temp;
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

我同意关于学习调试的评论。你编写代码的方式很明显,你是初学者,所以这里是帮助你的答案。要回答您的问题,您的程序中会出现几个逻辑错误。

你可以简单地使用break来退出第一个for循环。所以在else语句中只写break;而不是i = score.length + 1;

接下来......错误的是您要对整个数组进行排序...但是,由于您在输入-1之前可能只输入了5或6个元素,因此您的前5个或6个元素将具有值和该分数中的所有其他值数组为0.如果你对整个数组进行排序,你显然会将前面的0和实际分数带到数组的后面。这是您的问题的答案。从i = 0到i&lt;计数。这将解决您的一些问题,但您还有更多问题。

还有其他一些问题。我希望你能够调试并找出答案。