数组的反向输出没有按预期工作
Reverse output from array isnt working as expected
所以我又遇到了一个关于数组交换的小问题。
所以我在这里得到了这段代码:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Random random = new Random();
int indexe = scan.nextInt();
System.out.println("Ihre Indexauswahl: " + indexe);
int[] array = new int[indexe];
System.out.println("Array:");
System.out.println("{");
for (int i = 0; i < array.length; i++) {
array[i] = 1 + random.nextInt(99);
System.out.println(i + " => " + array[i]);
}
System.out.println("}\nArray:\n{");
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
System.out.println(i + " => " + array[i]);
}
System.out.println("}");
}
我测试了数组的交换,如果我的数组中有 10 个索引,然后交换它,那么 System.out.print.
中只显示 5 个索引
如果我删除 for 条件中的“/2”,那么我会得到 10 个索引,但最后 5 个中的值是错误的。
我该如何解决这个问题?
带有“/2”的图片:
没有“/2”的图片:
交换每个元素后打印
public static void main(String[] args) {
Random random = new Random();
int[] array = new int[10];
for (int i = 0; i < array.length; i++) {
array[i] = 1 + random.nextInt(99);
}
printArray(array);
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
}
printArray(array);
}
private static void printArray(int[] array) {
System.out.println("Array: {");
for (int i = 0; i < array.length; i++) {
System.out.println(i + " => " + array[i]);
}
System.out.println("}");
}
因此,根据您的逻辑,您从 last 开始获取索引并从 beginning 开始迭代数组,所以基本上您应该在交换后打印输出,因为交换仅完成 array.length / 2 次, 因此它的打印时间只有一半。
尝试执行以下代码:
public static void main(String []args){
Scanner scan = new Scanner(System.in);
Random random = new Random();
int indexe = scan.nextInt();
System.out.println("Ihre Indexauswahl: " + indexe);
int[] array = new int[indexe];
System.out.println("Array:");
System.out.println("{");
for (int i = 0; i < array.length; i++) {
array[i] = 1 + random.nextInt(99);
System.out.println(i + " => " + array[i]);
}
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
}
System.out.println("}\nArray:\n{");
for(int i = 0; i < array.length ; i++) {
System.out.println(i + " => " + array[i]);
}
System.out.println("}");
}
好吧,我有一个简单的逻辑:
如果你想使用数组说 h[]
取两个变量a,b。
a是起点,b是终点。所以 b=数组的长度。
现在 运行 一个循环,直到你到达数组的中点,因为你将交换数字直到你只到达中点。
因此将第一个元素与最后一个元素交换,依此类推,直到到达中点
int x=a[i]; a[i]=b[i]; x=b[i];
我正在遍历数组 h
所以我又遇到了一个关于数组交换的小问题。
所以我在这里得到了这段代码:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Random random = new Random();
int indexe = scan.nextInt();
System.out.println("Ihre Indexauswahl: " + indexe);
int[] array = new int[indexe];
System.out.println("Array:");
System.out.println("{");
for (int i = 0; i < array.length; i++) {
array[i] = 1 + random.nextInt(99);
System.out.println(i + " => " + array[i]);
}
System.out.println("}\nArray:\n{");
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
System.out.println(i + " => " + array[i]);
}
System.out.println("}");
}
我测试了数组的交换,如果我的数组中有 10 个索引,然后交换它,那么 System.out.print.
中只显示 5 个索引如果我删除 for 条件中的“/2”,那么我会得到 10 个索引,但最后 5 个中的值是错误的。
我该如何解决这个问题?
带有“/2”的图片:
没有“/2”的图片:
交换每个元素后打印
public static void main(String[] args) {
Random random = new Random();
int[] array = new int[10];
for (int i = 0; i < array.length; i++) {
array[i] = 1 + random.nextInt(99);
}
printArray(array);
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
}
printArray(array);
}
private static void printArray(int[] array) {
System.out.println("Array: {");
for (int i = 0; i < array.length; i++) {
System.out.println(i + " => " + array[i]);
}
System.out.println("}");
}
因此,根据您的逻辑,您从 last 开始获取索引并从 beginning 开始迭代数组,所以基本上您应该在交换后打印输出,因为交换仅完成 array.length / 2 次, 因此它的打印时间只有一半。
尝试执行以下代码:
public static void main(String []args){
Scanner scan = new Scanner(System.in);
Random random = new Random();
int indexe = scan.nextInt();
System.out.println("Ihre Indexauswahl: " + indexe);
int[] array = new int[indexe];
System.out.println("Array:");
System.out.println("{");
for (int i = 0; i < array.length; i++) {
array[i] = 1 + random.nextInt(99);
System.out.println(i + " => " + array[i]);
}
for (int i = 0; i < array.length / 2; i++) {
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
}
System.out.println("}\nArray:\n{");
for(int i = 0; i < array.length ; i++) {
System.out.println(i + " => " + array[i]);
}
System.out.println("}");
}
好吧,我有一个简单的逻辑: 如果你想使用数组说 h[]
取两个变量a,b。 a是起点,b是终点。所以 b=数组的长度。
现在 运行 一个循环,直到你到达数组的中点,因为你将交换数字直到你只到达中点。
因此将第一个元素与最后一个元素交换,依此类推,直到到达中点
int x=a[i]; a[i]=b[i]; x=b[i]; 我正在遍历数组 h