在 x 之前打印 4 个数字(可被 3 和 6 整除)并将它们存储在数组中
Print 4 numbers (that are divisible by 3 and 6) before x and store them in an array
我想在 x 之前打印 4 个数字(可被 3 和 6 整除)并将其存储在数组中。例如,如果我输入 29
代码将打印 6 12 18 24
.
到目前为止我的代码甚至都不起作用:
int array[] = new int[4];
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
int x = sc.nextInt();
for (int counter = 1; counter <= x; counter++) {
if (counter % 3 == 0 && counter % 6 == 0) {
for (int i = 0; i < array.length; i++) {
array[i] = counter;
System.out.println(array[i]);
}
}
}
int array[] = new int[4];
int index = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
int x = sc.nextInt();
for (int counter = x; counter >= 0; counter--) {
if (counter % 3 == 0 && counter % 6 == 0 && index < 4) {
array[index] = counter;
System.out.println(array[index]);
index++;
}
}
每次找到可被 3 或 6 整除的数字时,您的数组循环都会覆盖该值
Enter a number: 29
6
12
18
24
有两个问题。首先,当您的除法检查条件为真时,您添加了额外的不必要循环;其次,您开始从 1
到 x
的循环,而您的预期输出是检查从 x
到1
。这是修复:
int array[] = new int[4];
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
int x = sc.nextInt(), i = 0;
System.out.println(x);
for (int counter = x - 1; counter > 0; counter--) {
if (counter % 3 == 0 && counter % 6 == 0) {
array[i] = counter;
System.out.println(array[i]);
i++;
if (i == 4) {
break;
}
}
}
如果一个数能被6整除,那么它也能被3整除(因为6能被3整除)。第二个条件可以省略:
int number = 29;
int[] arr = IntStream
// iteration backwards from 'number' to 0
.iterate(number, i -> i > 0, i -> i - 1)
// elements that are divisible
// by 6 without remainder
.filter(i -> i % 6 == 0)
// first 4 elements
.limit(4)
.toArray();
// output
System.out.println(Arrays.toString(arr));
// [24, 18, 12, 6]
我想在 x 之前打印 4 个数字(可被 3 和 6 整除)并将其存储在数组中。例如,如果我输入 29
代码将打印 6 12 18 24
.
到目前为止我的代码甚至都不起作用:
int array[] = new int[4];
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
int x = sc.nextInt();
for (int counter = 1; counter <= x; counter++) {
if (counter % 3 == 0 && counter % 6 == 0) {
for (int i = 0; i < array.length; i++) {
array[i] = counter;
System.out.println(array[i]);
}
}
}
int array[] = new int[4];
int index = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
int x = sc.nextInt();
for (int counter = x; counter >= 0; counter--) {
if (counter % 3 == 0 && counter % 6 == 0 && index < 4) {
array[index] = counter;
System.out.println(array[index]);
index++;
}
}
每次找到可被 3 或 6 整除的数字时,您的数组循环都会覆盖该值
Enter a number: 29
6
12
18
24
有两个问题。首先,当您的除法检查条件为真时,您添加了额外的不必要循环;其次,您开始从 1
到 x
的循环,而您的预期输出是检查从 x
到1
。这是修复:
int array[] = new int[4];
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
int x = sc.nextInt(), i = 0;
System.out.println(x);
for (int counter = x - 1; counter > 0; counter--) {
if (counter % 3 == 0 && counter % 6 == 0) {
array[i] = counter;
System.out.println(array[i]);
i++;
if (i == 4) {
break;
}
}
}
如果一个数能被6整除,那么它也能被3整除(因为6能被3整除)。第二个条件可以省略:
int number = 29;
int[] arr = IntStream
// iteration backwards from 'number' to 0
.iterate(number, i -> i > 0, i -> i - 1)
// elements that are divisible
// by 6 without remainder
.filter(i -> i % 6 == 0)
// first 4 elements
.limit(4)
.toArray();
// output
System.out.println(Arrays.toString(arr));
// [24, 18, 12, 6]