我被问到的问题是:
找到并打印(每行一个)的那些值一个是形式3×+ 1对于一些x的。每个这样的值应该只打印一次,在它第一次出现的位置。
我尝试了许多模的变体来尝试获得正确的数字,但我似乎无法解决这个问题。
这是我开始的代码:
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)
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
如果a具有3x + 1then形式a - 1 = 3x,因此您想从每个值中减去一个,然后测试除法余数是否为零。然后打印匹配项。此外,您还可以使用Integer::parseInt,我宁愿形式int[] a在int a[](第二形式保存,以熟悉C和C ++开发者)以及(如在一个由ernest_k指出注释使用distinct(),以确保其唯一性)。喜欢,
int[] a = Arrays.stream(args).mapToInt(Integer::parseInt).toArray();
Arrays.stream(a).filter(x -> (x - 1) % 3 == 0)
.distinct().forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |