分析没有已知数组大小的数组

时间:2015-11-10 23:14:53

标签: java arrays loops java.util.scanner

我一直在寻找答案,而且我总能找到部分回答我问题的事情。所以,这是我现在的代码:

import java.util.Scanner;

public class VelikaDN {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter numbers: ");
        int[] array = new int[100];
        for (int i = 0; i < array.length; i++) {
            array[i] = input.nextInt();
            // Number of elements
            int counter = 0;
            for (int j = 0; j < array.length; j++) {
                if (array[j] != 0)
                    counter++;
            }
            System.out.println("This array has " + counter + " numbers.");
        }
    }
}

它有效,但最后我发现了一些不像我想象的那么轻微的东西。这是输出:http://i.imgur.com/3mmEpUb.png 我试图重新定位整个代码的打印,试图以某种方式停止循环但我失败了。我真的不确定是什么问题了。我试图解决这个问题并做另一项任务,但正如我已经说过的那样,循环之外的任何事情都没有出现。

如果这令人困惑,我很抱歉,我是Java新手,我也很难解释。如果您有一些提示或替代解决方案,请随意将其丢入此处。如果还有其他我需要解释的话,那就这么说吧。

2 个答案:

答案 0 :(得分:1)

int counter=0;放在循环之外,然后在循环之后发布system.out

答案 1 :(得分:0)

我没有看到使用2个嵌套for循环(或2个独立循环)的意义,它只是使算法复杂度为O(n ^ 2) 您可以检查第一个循环中的值是否为0,以及它是否不会增加计数器的值

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter numbers: ");
    int[] array = new int[2];
    int counter = 0;

    for (int i = 0; i < array.length; i++) {
        array[i] = input.nextInt();

        if(array[i] != 0) {
            counter++;
        }
    }

    System.out.println("This array has " + counter + " numbers.");
}

修改

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter numbers: ");
    int[] array = new int[100];
    int i = 0;

    for (; i < array.length; i++) {
        int inputValue = input.nextInt();

        if(inputValue <= 0) {
            break;
        } else {
            array[i] = inputValue;
        }
    }

    System.out.println("This array has " + i + " numbers.");
}

编辑2(Credit @Andreas)

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter numbers: ");
    int[] array = new int[100];
    int i = 0;

    while (input.hasNextInt()) {
        int inputValue = input.nextInt();

        array[i++] = inputValue;
    }

    System.out.println("This array has " + i + " numbers.");
}