如何在Java程序中使用另一种方法或缩短此程序



公共类循环{

public static void main(String[] args) {
int arr[] = { 11, 21, 31, 41, 51, 61, 71, 81, 91, 12, 22, 32, 42, 52, 62, 72, 82, 92 };
for (int i = 1; i <= 100; i++) {
if (i == arr[0] | i == arr[1] | i == arr[2] | i == arr[3] | i == arr[4] | i == arr[5] | i == arr[6]
| i == arr[7] | i == arr[8] | i == arr[9] | i == arr[10] | i == arr[11] | i == arr[12]
| i == arr[13] | i == arr[14] | i == arr[15] | i == arr[16] | i == arr[17]) {
continue;
}
System.out.println(i);
}
}

}

想要的输出是1-100expect=没有数组编号

当您使用关系数据库时,您可以根据数学中的集合论进行推理。你可以用一个类似的方法来解决这个问题:设置差异:

Set<Integer> toBeExcluded = Set.of(11, 21, 31, 41, 51, 61, 71, 81, 91, 12, 22, 32, 42, 52, 62, 72, 82, 92);
Set<Integer> oneHundred = IntStream.rangeClosed(1,100).boxed().collect(Collectors.toSet());
oneHundred.removeAll(toBeExcluded);// Set difference
System.out.println(oneHundred);

下面的解决方案使用了一个Set工厂方法,该方法需要Java 9或更新版本。https://openjdk.org/jeps/269

public static void main(String[] args) {
Set<Integer> doNotPrintNumbers = Set.of(11, 21, 31, 41, 51, 61, 71, 81, 91, 12, 22, 32, 42, 52, 62, 72, 82, 92);
for (int i = 1; i <= 100; i++) {
if (!doNotPrintNumbers.contains(i)) {
System.out.println(i);
}
}
}

或者使用流:

public static void main(String[] args) {
Set<Integer> doNotPrintNumbers = Set.of(11, 21, 31, 41, 51, 61, 71, 81, 91, 12, 22, 32, 42, 52, 62, 72, 82, 92);
IntStream.rangeClosed(1, 100)
.filter(n -> !doNotPrintNumbers.contains(n))
.forEach(System.out::println);
}

最新更新