繁体   English   中英

需要数组 java 帮助

[英]Array java help needed

我有这个程序,它接受用户输入并显示输入每个整数的次数。 我几乎把它放下了,但需要另一个循环来省略显示的 0。换句话说,任何带有 0 的数字都无法读取,同样出于某种原因,我在我的程序中从同一个数字中获得了两个输出。 例如,如果我输入3,3我将得到3 occurs 1 time3 occurs 2 times作为输出。 第2次正确,第1次错误。

public class Six_Three {


public static void main(String[] args) {

    Scanner input = new Scanner (System.in);
    System.out.print("enter integers between 1 and 100: ");
    int[] num = new int[100];
    int data = input.nextInt();

    while ((data = input.nextInt()) != 0) {
        num[data]++;
    }

    for (int i = 1; i < 100; ++i) { 
        if (num[i] > 0) 
            System.out.println(i + " occurs " + num[i] + " times ");
    }
}

您需要两个单独的循环:第一个用于收集信息,第二个用于打印结果:

int data = 0;

while ((data = input.nextInt()) != 0)
{
    num[data]++;
}

for (int i = 0; i < 100; ++i)
{
    if (num[i] != 0) { /* print num[i] */ }
}

每次读取整数时都会打印输出。 您的程序按预期运行。

为了得到你想要的东西,你需要产生任何输出之前扫描所有的输入。

试试这个:

        while (data != 0){
            data = input.nextInt();
            num[data]++;
        }

        for (int i = 1; i < 100; ++i) { // your version is 0...99, else array index out of bounds
            if (num[i] > 0) 
                System.out.println(i + " occurs " + num[i] + " times ");
        }

只需在 while 循环后循环遍历num数组即可打印计数。

for (int index = 0; index < num.length; index++) {

    if (num[index] != 0)
        System.out.println(data + " occurs " + num[data] + " time(s).");
}

你写的最后一个数字的方式必须是 0 才能使扫描停止。 检查是否有另一个 int 可用并将其用作扫描循环的条件可能是一个好主意。 这样你的程序就可以接受任何整数。

while (input.hasNextInt()){
    num[input.nextInt()]++;
}

太简单了

    int data = 0;

    int[] num = new int[100];

    int i = 0;
    while (i < num.length) {
        if ((data = input.nextInt()) == 0)
            break;

        num[i] = data;
        i++;
    }

    for (i = 0; i < 100; ++i) {
        int times = 0;
        if (num[i] != 0) {
            for (int j = 0; j < 100; j++) {
                if (num[j] == 0) {
                    break;
                } else if (num[i] == num[j]) {
                    times++;
                }
            }
            System.out.println(num[i] + " occurs " + times + " times ");
        } else {
            break;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM