提问者:小点点

我如何重写这个程序,使它只反向显示偶数?[关闭]


编辑问题,以包括预期行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答问题。

我的程序显示用户反向输入的10位数字,但我希望它仅反向显示偶数。我尝试通过编写if statemnt数字[i]%2=0来做到这一点,但它不起作用。这是我的代码:

  Scanner input = new Scanner (System.in);

        int[] numbers = new int[10];
        System.out.println("Enter "+numbers.length+" integer numbers: ");

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

        }
        System.out.println("\nThe reverse of entered even numbers:  ");


        for (int i = numbers.length-1; i >=0; i--) {
            System.out.print(numbers[i] + " ");
        } System.out.print("\n");    }

共3个答案

匿名用户

你所描述的尝试应该已经奏效,即:

for (int i = numbers.length-1; i >=0; i--) {
    if (numbers[i] % 2 == 0) {
        System.out.print(numbers[i] + " ");
    }
}

对所发生事情的一种解释是,您实际上执行了此if语句:

if (numbers[i]%2=0) { ... }

这可能会失败,因为你是在赋值,而不是检查等式。

匿名用户

int[] numbers = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Arrays.stream(numbers)
      .boxed()
      .sorted(Collections.reverseOrder())
      .filter(i -> i % 2 == 0)
      .forEach(System.out::println);

更新:< br >单行输出,中间有空格:

int[] numbers = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
String output = Arrays.stream(numbers)
                       .boxed()
                       .sorted(Collections.reverseOrder())
                       .filter(i -> i % 2 == 0)
                       .map(String::valueOf)
                       .collect(Collectors.joining(" "));
System.out.println(output);

匿名用户

使用语句更正它

if (numbers[numbers.length - 1] % 2 == 0) {
    //.....
}