打印数组中"x"下面的所有数字

Lis*_*isa 3 java arrays for-loop

我正在尝试打印扫描数字(x)以下的数字.我不知道怎么样,到目前为止我所拥有的只是如何打印最低数量的数组.不知道我怎么能把x包含在我的最后一个循环中.因此,如果我输入x = 13,我希望它打印出11,7,5,3,2.

import java.util.Scanner;

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

        Scanner scan = new Scanner(System.in);


        //1

        int[] num= {2, 3, 5, 7, 11, 13, 17, 19};

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

        System.out.println("Num: " + num[i]);
        }

        // 2
        System.out.print("\n Type a number: ");

        int x = scan.nextInt();

        x = num[0];
        for (int i=1; i>=num.length; i++) {
        if(num[i] < x) {
            x = num[i];
        }
        }
        System.out.println("Numbers below" + x);
    }
}
Run Code Online (Sandbox Code Playgroud)

ars*_*jii 6

你不是在for循环中打印任何东西,即使你是,for循环本身看起来有点奇怪.你的意思是i < num.length?而你为什么要重新分配xnum[0]?试试这个:

for (int i = 0 ; i < num.length ; i++)
    if (num[i] < x)
        System.out.println(num[i]);
Run Code Online (Sandbox Code Playgroud)

(确保删除该x = num[0]行.)

就像一个注释,你也可以使用for-each循环:

for (int a : num)
    if (a < x)
        System.out.println(a);
Run Code Online (Sandbox Code Playgroud)


Rei*_*eus 5

你可以这样做:

System.out.println("Numbers below " + x);
for (int i = 0; i < num.length; i++) {
    if (num[i] < x) {
        System.out.println(num[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个List带有foreach循环的版本:

    List<Integer> list = new ArrayList<Integer>();
    for (int n: num) {
       if (n < x) {
          list.add(n);
       }
    }
    System.out.println("Numbers below " + x + ": " + list);
Run Code Online (Sandbox Code Playgroud)

输出:

Numbers below 13: [2, 3, 5, 7, 11]
Run Code Online (Sandbox Code Playgroud)