创建一个计数到给定数字的数组

时间:2016-03-15 04:35:24

标签: java

我需要帮助创建一个数到最多给定数字的数组。输出应该如下所示:

Enter a positive integer: 8
Counting up: 1 2 3 4 5 6 7 8
Counting down: 8 7 6 5 4 3 2 1
The first 8 multiples of 5: 5 10 15 20 25 30 35 40
The first 8 multiples of 10: 10 20 30 40 50 60 70 80

这是我到目前为止所做的:

Scanner input = new Scanner(System.in);

    int[] myList = new int[1];

    System.out.print("Enter a positive integer: ");
    promptUser(myList);

    int[] testArray = { 1, 1, 2, 3, 5, 8, 13 };
    System.out.print("Test array: ");
    printArray(testArray);

    System.out.print("Counting up: ");
    int[] countingUp = countUp(n);
    printArray(countingUp);
}

public static void promptUser(int[] a){
    Scanner input = new Scanner(System.in);
    for(int i=0; i<a.length; i++){
        a[i] = input.nextInt();

    }
}

public static void printArray(int[] array){
    for(int i=0; i<array.length; i++)
        System.out.print(array[i]);

    }

public static int[] countUp(int n){
    for(int i=0; i<n; i++){
        int count = 0;
        while(count<n){
            count++;
        }
    }
}
}

除了最后一个名为countingUp的方法外,一切似乎都能正常工作。

非常感谢你!

4 个答案:

答案 0 :(得分:1)

   public static int[] countUp(int n){
        for(int i=0; i<n; i++){
            int count = 0;
            while(count<n){
                count++;
            }
        }
    }

change this to

public static int[] countUp(int n){
        int [] temp=new int[n];
        for(int i=0; i<n; i++){
         temp[i]=i+1;
        }
     return temp;
    }



System.out.print("Counting up: ");
    int[] countingUp = countUp(n);
    printArray(countingUp);

In this line change to

 int[] countingUp = countUp(n);
 for(int i=0;i<countingUp.length;i++){
   system.out.println(countingUp[i]+" ");
}

答案 1 :(得分:0)

我们可以首先提取 计算 公共逻辑,方法是提供初始消息,运行次数,初始值和一个增量。像,

private static void count(String msg, int times, int init, int inc) {
    System.out.print(msg);
    for (int i = 0; i < times; i++) {
        System.out.print(' ');
        System.out.print(init);
        init += inc;
    }
    System.out.println();
}

然后我们可以用

之类的东西来实现整个要求
public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Enter a positive integer: ");
    System.out.flush();
    do {
        int num = scanner.nextInt();
        count("Counting up:", num, 1, 1);
        count("Counting down:", num, num, -1);
        count(String.format("The first %d multiples of 5:", num), num, 5, 5);
        count(String.format("The first %d multiples of 10:", num), num, 10, 10);
        System.out.print("Enter a positive integer: ");
        System.out.flush();
    } while (scanner.hasNextInt());
}

如果输入为8,这将产生请求的输出,然后将提示输入更多信息。

答案 2 :(得分:0)

首先,如果您尝试动态更改数组大小,那么在Java中 NOT POSSIBLE 看看@ this accepted answer。我建议你改用 ARRAYLIST

虽然我在代码中发现了以下错误。在你的代码中,我不明白两件事。

第一个:

System.out.print("Counting up: "); int[] countingUp = countUp(n); printArray(countingUp);

n的价值是多少?我认为它没有被初始化。

第二名:

public static int[] countUp(int n){ for(int i=0; i<n; i++){ int count = 0; while(count<n){ count++; } } }

什么会返回此功能?你还没有退回任何东西。

答案 3 :(得分:0)

显然,您不需要按照以下步骤操作阵列。

首先创建一个处理所有计算和计算的类

class SupportCounting {

public void countUp(int num) {
    System.out.print("Counting up : ");
    for (int i = 1; i <= num; i++) {
        System.out.print(i);
        System.out.print(" ");
    }
    System.out.println("");
}

public void countDown(int num) {
    System.out.print("Counting Down : ");
    for (int i = num; i > 0; i--) {
        System.out.print(i);
        System.out.print(" ");
    }
    System.out.println("");
}

public void printMultiple(int num, int scalefactor) {
    System.out.print("First " + num + " multiples of " + scalefactor + " : ");
    for (int i = 1; i <= num; i++) {
        System.out.print(i * scalefactor);
        System.out.print(" ");
    }
    System.out.println("");
}}

然后在主要方法中使用该类

public class Counting {

public static void main(String[] args) {

    Scanner reader = new Scanner(System.in);
    System.out.print("Enter a positive integer : ");
    int n = reader.nextInt();

    SupportCounting sc = new SupportCounting();
    sc.countUp(n);
    sc.countDown(n);
    sc.printMultiple(n, 5);
    sc.printMultiple(n, 10);
}}

希望有所帮助