我使用for-loop
填充数字1到10的数组。
现在我需要用第一个数组的值填充第二个数组,但是要颠倒。所以第二个数组必须用10比1填充。
我尝试了一些东西,但它只用1填充第二个数组。
输出是:
1
2
3
4
5
6
7
8
9
10
1
1
1
1
1
1
1
1
1
1
它应该是1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1
package FillandTurn;
import java.util.Scanner;
/**
*
* @author Quinten
*/
public class FillandTurn {
/**
* @param args the command line arguments
*/
Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
// TODO code application logic here
FillandTurn fill = new FillandTurn();
fill.start();
}
public void start(){
FillandTurn turn = FillandTurn();
int[] array = turn.vullen();
int[] array2 = turn.draaien(array);
}
public int[] fill(){
int[] array = new int[10];
int j = 0;
for(int i = 0; i < array.length; i++ ){
j++;
array[i] = j;
}
for(int p = 0; p <= array.length-1; p++ ){
System.out.println(array[p]);
}
return array;
}
public int[] turn(int[] array){
int[] array2 = new int[10];
for(int x = 0; x < array2.length; x++){
for(int y = array.length-1; y >=0; y--){
array2[x] = array[y];
}
}
for(int p = 0; p <= array2.length-1; p++ ){
System.out.println(array2[p]);
}
return array2;
}
}
感谢任何帮助!
答案 0 :(得分:3)
您的问题是您不需要嵌套的for
循环来执行此操作;你只需要一个。您现在正在做的是将{{1>}中的每个值逐个分配到array
的第一个索引中。然后,将array2
中的每个值分配到第二个索引中,依此类推。由于您分配的最终值是数组前面的array
,因此最终结果是1
在每个索引中都填充array2
。所以这段代码在这里:
1
应该归结为一个循环,它同时在两个方向上迭代。
for(int x = 0; x < array2.length; x++){
for(int y = array.length-1; y >=0; y--){
array2[x] = array[y];
}
}
如果您知道数组的大小相同,您也可以将其更改为仅使用一个变量,并使用for(int x = 0, y = array.length-1;
x < array2.length && y >=0;
x++, y--){
array2[x] = array[y];
}
获取其他数组的索引,这将更加简洁。 / p>
这样的事情:
size - x - 1
答案 1 :(得分:0)
有一个for循环来填充第一个数组,如上所述,但是第二个数组有一个单独的for循环,它以第一个数组的大小开始,并在每次迭代时递减,将元素放入新数组
答案 2 :(得分:0)
您是否尝试过从后面到前面读取阵列?
public int[] reverseArray(int[] array1) {
int[] array2 = new int[array1.length];
int pos = 0;
for(int neg = array1.length; neg >= 0; neg--) {
array2[pos] = array1[neg];
}
return array2;
}
这是一种简单的方法,可能有更好的方法来实现这一目标。
答案 3 :(得分:0)
复制数组时,只需要一个循环。使用嵌套循环意味着您要复制每个值N次,或者实际上第一个值会覆盖所有其他值。
你可以做到
class FillAndTurn {
public static void main(String... args) {
int[] array = new int[10];
fill(array);
int[] array2 = turn(array);
IntStream.of(array).forEach(System.out::println);
IntStream.of(array2).forEach(System.out::println);
}
static void fill(int[] array) {
for (int i = 0; i < array.length; i++)
array[i] = i + 1;
}
static int[] turn(int[] array) {
int[] array2 = new int[array.length];
for(int i = 0; i < array.length; i++)
array2[array2.length - i - 1] = array[i];
return array2;
}
}