-1

编写一个接受来自用户的 100 个整数的 Java 应用程序。输入应在 1-200 范围内。程序将显示以下类别的整数个数:

1-10
11-20
21-30
31-40
…
…
191-200

你的程序应该有一个 void 方法来完成这些任务。它有一个参数表示输入值,形式int[]如下所示:

void displayStatistics( int[] input)

请大家帮帮我。我不知道下一步该怎么做。

代码是这样的:

public static ArrayList<Integer> array = new ArrayList<Integer>();
public static Scanner reader = new Scanner(System.in);

public static void main (String[] args)
{
    System.out.println("Enter number and 0 for stop.");
    int enter = reader.nextInt();
    while ( enter != 0)
    {
        if ((enter >= 1) && (enter <= 200))
        {
            array.add(enter);
        }

        else
        {
            System.out.println("Number range is 1-200");
        }

         enter= reader.nextInt();    
    }

    void displayStatistics(int[] input)
    {
    for (int i = 1; i <= 20; i++)
    {
        int Nombor1 = ((i-1) * 10) + 1;
        int Nombor2 = (i * 10);
        int count = 0;
        System.out.print((Number1 + "-" + Number2 +"   ===>"));
        for (int number : array)

        {
            if ((number >= Number1) && (number <= Number2))
            {
                count++;
            }
        }

        for (int x = 0; x < count; x++)

            System.out.print(x+1);

            System.out.println();
    }
    }   
} 
4

3 回答 3

1

我会确保你的程序编译并测试它,看看它做了什么。如果您使用 IDE,它会在您键入时显示代码是否正在编译,并且可以帮助您格式化代码。

当它没有按照您的预期执行时,您可以使用调试器单步执行代码,以找出它执行它的原因。


为了您的兴趣,并且您有一个似乎可行的方法,这是我将如何编写 displayStatistics

static void displayStatistics(int[] ints) {
    int[] count = new int[20];
    for (int i : ints) count[(i - 1) / 10]++;
    for (int i = 0; i < count.length; i++)
        System.out.printf("%d to %d : %d%n", i * 10 + 1, i * 10 + 10, count[i]);
}
于 2012-11-07T12:27:33.310 回答
0

好的,对您显示的代码进行一些说明。

  • 你不能把一个方法放在另一个里面。将 displayStatistics() 移出 main()。
  • 注意从一开始就正确缩进你的代码。它有助于获得正确的代码。
  • 遵循 Java 约定:写nombor1,而不是Nombor1.
  • 在扫描范围之后,println,count循环这个值是没有意义的。
于 2012-11-07T12:31:46.397 回答
0

您忘记关闭主要方法。

然后你需要调用 displaystatistics 方法。您可以将该方法更改为静态方法,或创建类的新实例。

无论哪种方式,您都不需要将变量“input[]”传递给它,因为您将“array”声明为静态。

然后,只显示结果。

我稍微更正了你的程序,所以这应该可以工作,但这不是解决这个问题的最有效方法。

public static ArrayList<Integer> array = new ArrayList<Integer>();
public static Scanner reader = new Scanner(System.in);

public static void main(String[] args) {

    System.out.println("Masukkan nombor antara 1-200 dan 0 untuk berhenti.");
    int masuk = reader.nextInt();
    while ( masuk != 0 ) {
        if ( (masuk >= 1) && (masuk <= 200) ) {
            array.add(masuk);

        }

        else {
            System.out.println("Nombor mesti antara 1-200");
        }
        masuk = reader.nextInt();
    }
    displayStatistics();
}

static void displayStatistics() {
    for (int i = 1; i <= 20; i++) {
        int Nombor1 = ((i - 1) * 10) + 1;
        int Nombor2 = (i * 10);
        int count = 0;
        System.out.print((Nombor1 + "-" + Nombor2 + "   ===>"));
        for (int nombor : array) {
            if ( (nombor >= Nombor1) && (nombor <= Nombor2) ) {
                count++;
            }
        }

        /*for (int x = 0; x < count; x++) {
            System.out.print(x + 1);
        }*/
        System.out.print(count);
        count = 0;

        System.out.println();

    }

}
于 2012-11-07T12:42:29.940 回答