首页 > 解决方案 > 有人可以解释一下这段代码吗?关于用户输入、扫描仪等

问题描述

有人可以向我解释这段代码是如何工作的吗?

它允许用户输入直到 的数字1000,然后将原始输入的数字(偶数和奇数)打印在一个单独的数组中。但我只是不明白存在的部分gem++以及gem1++何时输出偶数和奇数而不是偶数和奇数的数量。

在放了这个之后

double even[] = new double[gem];
double odd[] = new double [gem1]; 

为什么需要一次又一次地gem=0重复gem1=0?如果我问了太多问题,我很抱歉,我很困惑,我上周刚学了java。

public class wutt {
    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        System.out.print("Enter no. of elements you want in array : ");
        int n = s.nextInt();

        if (1 <= n && n <= 1000) {

            double a[] = new double[n];
            int gem = 0, gem1 = 0;

            System.out.println("Enter all the elements : ");
            for (int i = 0; i < n; i++) {
                a[i] = s.nextInt();
                if (a[i] % 2 == 0)
                    gem++;
                else
                    gem1++;
            }

            double even[] = new double[gem];
            double odd[] = new double[gem1];

            gem = 0;
            gem1 = 0;

            for (int i = 0; i < a.length; i++) {
                if (a[i] % 2 == 0) {
                    even[gem] = a[i];
                    gem++;
                } else {
                    odd[gem1] = a[i];
                    gem1++;
                }
            }

            System.out.println("Original: " + Arrays.toString(a));
            System.out.println("Odd: " + Arrays.toString(odd));
            System.out.println("Even: " + Arrays.toString(even));

        } else
            System.out.print("Invalid input");
    }
}

标签: javaarraysjava.util.scanner

解决方案


如果您希望程序在用户输入大于 1000 或小于 0 的数字后停止,您需要break在条件中添加语句if

if (size < 0 || size > 1000) {
    System.out.println("Size must be between 0 and 1000");
    break;
}

推荐阅读