提问人:Zeynab Moghaddas 提问时间:11/16/2023 最后编辑:deHaarZeynab Moghaddas 更新时间:11/16/2023 访问量:60
通过从用户那里给出两个数字来制作数组,并在 Java 中打印数组
Making an array by giving two number from user and print the array in Java
问:
我想从用户那里给出两个数字并创建一个数组。然后打印数组。我应该如何在java中完成此任务?
这是我的代码。我给出数字 5 和 25。但它不能正常工作。
我想要的输出:[6,7,....,23,24]
系统输出,输入最小值:5,最大值:25
[0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
我的代码:
import java.util.Arrays;
import java.util.Scanner;
public class JavaApplication18 {
public static void main(String[] args) {
Scanner reader = new Scanner (System.in);
System.out.print("min value: ");
int min = reader.nextInt();
// Ask the user to input the minimum value
System.out.print("max value: ");
int max = reader.nextInt();
for (int a = min; a < max; a++) {
int [] userArray = new int[a];
System.out.print(Arrays.toString(userArray));
}
}
}
我想要的值 5 和 25 输出:[6,7,...,23,24]
答:
首先,您不是在创建单个数组,而是在每次迭代中创建一个数组,其中线在循环内。这解释了您不需要的系统输出,它显示了几个数组......int [] userArray = new int[a];
for
您必须在循环外部创建具有正确大小的数组,然后将其填充到内部,计算正确的索引和值。
下面是一个示例方法/函数:
public static void printArray(int min, int max) {
// create an array with the amount of numbers between from and to
int[] array = new int[max - min - 1];
// iterate from minimum to maximum (each exclusively)
for (int i = min + 1; i < max; i++) {
// and put the number at indexes starting by 0
array[i - min - 1] = i;
}
// print the array
System.out.println(Arrays.toString(array));
}
使用示例值调用它,例如main(…)
public static void main(String[] args) {
printArray(5, 25);
}
将产生以下(期望的)输出:
[6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
评论
array[i - min - 1] = i
i
i - min - 1
"...这是我的代码。我给出数字 5 和 25。但它不能正常工作。
我想要的输出:[6,7,....,23,24]
...”
在循环之前声明 userArray,并在循环之后打印。
此外,数组应初始化为最大值 − 最小值 − 1 的长度。
变量 a 应从 min + 1 开始。
并且,利用附加变量 i 进行 userArray 访问。
int [] userArray = new int[max - min - 1];
for (int i = 0, a=min + 1; a<max; i++, a++) {
userArray[i] = a;
}
System.out.print(Arrays.toString(userArray));
输出
min value: 5
max value: 25
[6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]
这是关于数组的 Java 教程。
数组(Java 教程>学习 Java™ 语言>语言基础知识)。
更好、更干净的方法是使用 Streams API
System.out.println(IntStream
.range(min + 1, max)
.boxed()
.collect(Collectors.toList())
);
IntStream :- 支持顺序和并行聚合操作的基元整值元素序列。这是 Stream 的 int 原始专用化。
range() :-static IntStream range(int startInclusive, int endExclusive)
boxed() :- 返回一个 Stream,该流由该流的元素组成,每个元素装箱为一个 Integer。
评论
int[] a = IntStream.range(min + 1, max).toArray()
评论