我正在制作一个程序,将所有数据从一个数组放入另一个数组,向后。
所以,如果
String[] originalArray = {"you", "see", "I"};
然后它应该将它转移到这样的新数组中:
String[] newArray = new String[3];
newArray = "I", "see", "you"
这是我的代码。
public class ReverseArray {
public static void reverse() {
String[] originalArray = {"cool", "really", "are", "You"};
String[] newArray = {"", "", "", ""};
for(int b = 0; b < newArray.length; b++) {
for(int a = 3; a < -1; a--) {
newArray[b] = originalArray[a];
}
}
for(int c = 0; c < newArray.length; c++) {
System.out.print(newArray[c] + "+");
}
}
}
我不确定是什么问题。当我尝试将其打印出来时,它只打印出(+ + + +)
我尝试过改变
String[] newArray = {"", "", "", ""};
到
String[] newArray = new String[4];
但它只是输出为
null
任何帮助?
答案 0 :(得分:3)
你的问题在你的内心循环中......
for (int a = 3; a < -1; a--) {
大声读出来......
a
等于3
a
小于-1
做a--
查看它落在何处,for-loop
只会在a
为-1
时运行,但您已将其初始化为3
你实际上可以通过一个循环逃脱,例如......
String[] newArray = new String[originalArray.length];
for (int index = 0; index < newArray.length; index++) {
newArray[index] = originalArray[originalArray.length - index - 1];
}
基本上这会对两个数组使用index
值,但调整originalArray
使其从末尾而不是从开头移动,作为一种可能的解决方案;)
答案 1 :(得分:1)
使用Collections.reverse()的另一种方式:
List<String> list = Arrays.asList("cool", "really", "are", "You");
System.out.println(list);
Collections.reverse(list);
System.out.println(list);
输出:
[cool, really, are, You]
[You, are, really, cool]
答案 2 :(得分:0)
好的,步骤如下:
您有一个大小为A
的数组X
。您希望将这些元素放在大小为B
的数组X
中。基本上你想要的是A[0]
(第一个元素)中的元素位于B
的最后位置,即B[2]
。为此,您需要计算“反向”索引。
首先,你循环遍历你的数组:
for(int index = 0; index < A.length;index++)
{
String thisElement = A[index];
}
接下来,你想把它放在最后一个位置的另一个数组中,对吧?那么你需要取这个数组的长度,减去当前的索引。
for(int index = 0; index < A.length;index++)
{
String thisElement = A[index];
// The other index
int otherIndex = (B.length - 1) - index; // We do -1 because we have zero-indexing.
B[otherIndex] = thisElement;
}
现在应该以相反的顺序包含所有元素。
我尝试过更改
String[] newArray = {"", "", "", ""};
到
String[] newArray = new String[4];
这些东西基本相同。后者告诉编译器“给我4个字符串的空间”。在前者你给它4个字符串,它为他们腾出空间。所以这不是真正的必要,而是正确的。
for(int b = 0; b < newArray.length; b++) {
for(int a = 3; a < -1; a--) {
newArray[b] = originalArray[a];
}
}
这段代码也是错误的。你在外循环中遍历数组。对于每个元素,您尝试再次循环。这也不需要。即便如此,你的循环从3变为2 ......但条件是“只要a小于-1”。它不小于-1
,所以这个循环永远不会执行。
答案 3 :(得分:0)
您的代码存在很大问题:
for(int b = 0; b < newArray.length; b++) {
for(int a = 3; a < -1; a--) {
newArray[b] = originalArray[a];
}
}
使用&#34; a&lt; -1&#34;你可能想要&#34; a&gt; -1&#34;否则内循环不会启动。但最重要的是,你有两个嵌套循环(两个for循环)没有意义,你只需要一个循环两个反向数组,你甚至不需要新的数组来放置结果:< / p>
for (i = 0; i < originalArray.length / 2; i++) {
int temp = originalArray[i];
originalArray[i] = originalArray[originalArray.length - 1 - i];
originalArray[originalArray.length - 1 - i] = temp;
}
此for循环从数组的两侧向内替换位置。
当您达到代码掌握(或者不需要提供自己的算法)时,您只需使用:
Collections.reverse()
:)