我的学习作业

时间:2012-11-07 12:23:22

标签: java arrays

编写一个接受用户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();
    }
    }   
} 

3 个答案:

答案 0 :(得分: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]);
}

答案 1 :(得分:0)

好的,对你展示的代码有一些评论。

  • 您不能将方法放在另一个方法中。将displayStatistics()移出main()。
  • 从一开始就注意正确缩进代码。它有助于获得正确的代码。
  • 遵循Java惯例:写nombor1,而不是Nombor1
  • 扫描范围println count后,没有必要循环显示此值。

答案 2 :(得分: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();

    }

}