如何确定Java Intstream中的整数的形式是否为3x+;1.
我得到的问题是: 查找并打印(每行一个)某些x的3x+1形式的a值。每个这样的值只能在其第一次出现的位置打印一次 我已经尝试了许多模的变化,试图得到正确的数字,但我似乎不能把我的头围绕这个问题 这是给我的开始代码:如何确定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(
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[]
)@Namanx->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);