我有一系列n个元素和这些方法:
last()
返回数组的最后一个first()
返回数组的第一个int size()
返回数组的长度replaceFirst(num)
在开头添加int并返回其位置remove(pos)
删除了pos 我必须创建一个新方法,以相反的顺序为我提供数组。 我需要使用那些方法。现在,我无法理解为什么我的方法不起作用。 所以 for(int i = 1; i
remove将删除位置i处的元素,并返回它在该位置的数字,然后使用replaceFirst将移动数组的数字(由remove删除)。
我尝试使用{2,4,6,8,10,12}的简单数组 我的输出是:12 12 12 8 6 10
所以如果我有一个1,2,3,4,5
的数组但它似乎不起作用。
答案 0 :(得分:1)
好吧,我会给你提示。有多种方法可以反转数组。
for
循环中有两个索引,一个来自第一个,下一个来自最后一个并且开始交换这些指数的价值。Collections.reverse
类中还有一个Collections
方法来反转对象数组。您可以在this post 答案 1 :(得分:0)
这是在Stackoverflow by @unholysampler上提供的代码。您可能想要从那里开始:Java array order reversing
public static void reverse(int[] a)
{
int l = a.length;
for (int j = 0; j < l / 2; j++)
{
int temp = a[j]
a[j] = a[l - j - 1];
a[l - j - 1] = temp;
}
}
答案 2 :(得分:0)
反转数组是一个相对简单的过程。让我们开始考虑如何正常打印数组。
int[] numbers = {1,2,3,4,5,6};
for(int x = 0; x < numbers.length; x++)
{
System.out.println(numbers[x]);
}
这是做什么的?好吧,它增加x
,而它小于numbers.length
,所以实际发生的是...
首次运行:X = 0
System.out.println(numbers[x]);
// Which is equivalent to..
System.out.println(numbers[0]);
// Which resolves to..
System.out.println(1);
第二次运行:X = 1
System.out.println(numbers[x]);
// Which is equivalent to..
System.out.println(numbers[1]);
// Which resolves to..
System.out.println(2);
您需要做的是从numbers.length - 1
开始,然后返回0
。为此,您需要重新构建for loop
,以匹配以下伪代码。
for(x := numbers.length to 0) {
print numbers[x]
}
现在你已经研究了如何打印,现在是时候转向反转阵列了。使用for
循环,您可以从头到尾循环遍历数组中的每个值。你还需要一个新阵列。
int[] revNumbers = new int[numbers.length];
for(int x = numbers.length - 1 to 0) {
revNumbers[(numbers.length - 1) - x] = numbers[x];
}
答案 3 :(得分:0)
int[] reverse(int[] a) {
int len = a.length;
int[] result = new int[len];
for (int i = len; i > 0 ; i--)
result[len-i] = a[i-1];
return result;
}
答案 4 :(得分:0)
for(int i = array.length; i >= 0; i--){
System.out.printf("%d\n",array[i]);
}
试试这个。
答案 5 :(得分:0)
如果它是Java数组而不是复杂类型,最简单和最安全的方法是使用库,例如Apache commons:ArrayUtils.reverse(array);
答案 6 :(得分:0)
在Java中用于随机数组:
public static void reverse(){
int[] a = new int[4];
a[0] = 3;
a[1] = 2;
a[2] = 5;
a[3] = 1;
LinkedList<Integer> b = new LinkedList<Integer>();
for(int i = a.length-1; i >= 0; i--){
b.add(a[i]);
}
for(int i=0; i<b.size(); i++){
a[i] = b.get(i);
System.out.print(a[i] + ",");
}
}
希望这有帮助。
答案 7 :(得分:0)
int[] noArray = {1,2,3,4,5,6};
int lenght = noArray.length - 1;
for(int x = lenght ; x >= 0; x--)
{
System.out.println(noArray[x]);
}
}
答案 8 :(得分:0)
int[] numbers = {1,2,3,4,5};
int[] ReverseNumbers = new int[numbers.Length];
for(int a=0; a<numbers.Length; a++)
{
ReverseNumbers[a] = numbers.Length - a;
}
for(int a=0; a<ReverseNumbers.Length; a++)
Console.Write(" " + ReverseNumbers[a]);
答案 9 :(得分:0)
int[] numbers = { 1, 2, 3, 4, 5, 6 };
reverse(numbers, 1); >2,1,3,4,5
reverse(numbers, 2); >3,2,1,4,5
public int[] reverse(int[] numbers, int value) {
int index = 0;
for (int i = 0; i < numbers.length; i++) {
int j = numbers[i];
if (j == value) {
index = i;
break;
}
}
int i = 0;
int[] result = new int[numbers.length];
int forIndex = index + 1;
for (int x = index + 2; x > 0; x--) {
result[i] = numbers[forIndex--];
++i;
}
for (int x = index + 2; x < numbers.length; x++) {
result[i] = numbers[x];
++i;
}
return result;
}