如何确定Java Intstream中的整数的形式是否为3x+;1.

如何确定Java Intstream中的整数的形式是否为3x+;1.,java,java-stream,Java,Java Stream,我得到的问题是: 查找并打印(每行一个)某些x的3x+1形式的a值。每个这样的值只能在其第一次出现的位置打印一次 我已经尝试了许多模的变化,试图得到正确的数字,但我似乎不能把我的头围绕这个问题 这是给我的开始代码: import java.util.*; import java.util.stream.*; class Example { public static void main(String argv[]) { int a[] = Arrays.stream(

我得到的问题是:

查找并打印(每行一个)某些x的3x+1形式的a值。每个这样的值只能在其第一次出现的位置打印一次

我已经尝试了许多模的变化,试图得到正确的数字,但我似乎不能把我的头围绕这个问题

这是给我的开始代码:

import java.util.*;
import java.util.stream.*;

class Example {

  public static void main(String argv[]) {
    int a[] =
      Arrays.stream(argv)
      .mapToInt(s -> Integer.parseInt(s))
      .toArray();
  }
      // fill in here with expression starting Arrays.stream(a)

}

谢谢您的帮助。

如果
a
的形式为
3x+1
,则
a-1=3x
,因此您希望从每个值中减去一,然后测试带除法的余数是否为零。然后打印匹配项。另外,您可以使用<代码>整型::PARSEINT ,我更喜欢表格<代码> INT[],[<代码> >代码> int [][/Cuth](第二种形式被保留为C和C++开发人员熟悉的)和(如使用Ennestyk在使用A<代码>区别()/代码>以确保唯一性)。像


这似乎是一个家庭作业问题,你们应该试试自己,问问自己是否有什么地方卡住了。请详细写下您尝试了什么以及您面临的问题,而不是要求回答。我想您需要在某个地方调用
distinct()
,因为要求只打印一次号码。也可以仅限于一条流管道(没有中间的
int[]
)@Naman
x->x%3==1
不适用于负数,因此
x->(x-1)%3==0
更可取。@Holger-Yup,注意点。(不要假设整数大多为正)
int[] a = Arrays.stream(args).mapToInt(Integer::parseInt).toArray();
Arrays.stream(a).filter(x -> (x - 1) % 3 == 0)
        .distinct().forEach(System.out::println);