我是Java的初学者。我想知道如何打印这个反向arrayList的最后几个值,因为它们不是4的连续序列的一部分。我正在考虑使用if (numbers.size()%4==0)
,但我不知道在哪里正确实现它。
import java.util.*;
public class printArray {
public static void main(String[] args) {
ArrayList <Integer> numbers= new ArrayList<>();
numbers.add(10);
numbers.add(13);
numbers.add(2);
numbers.add(8);
numbers.add(7);
numbers.add(90);
numbers.add(-1);
numbers.add(2);
numbers.add(4);
numbers.add(5);
System.out.println(numbers);
System.out.println(reverse4(numbers));
}
public static ArrayList<Integer> reverse4 (ArrayList<Integer> numbers){
ArrayList< Integer> reverseSet= new ArrayList<>();
for (int i = 0; i < numbers.size(); i += 4) {//goes from 0 to 4, 4 to 8 and keeps incrementing by 4
for (int k = i + 3; k >= i ; k--)// reverse order, executes 4 times before going to the outer loop
reverseSet.add(numbers.get(k));
}
return reverseSet;
}
}
答案 0 :(得分:3)
您可以检查k
是否在范围内
if (k < numbers.size())
在执行reverseSet.add()
。
编辑:抱歉,误解了你在做什么。你想要反转任何完整的四组,但不是最后的任何部分组,听起来像。
所以,数:
position | 1 2 3 4 | 5 6 7
---------+----------------------------+--------------------
count | size-7 size-6 size-5 size-4|size-3 size-2 size-1
last
one
position | 1 2 3 4 | 5 6
---------+----------------------------+--------------------
count | size-6 size-5 size-4 size-3|size-2 size-1
last
one
position | 1 2 3 4 | 5
---------+----------------------------+--------------------
count | size-5 size-4 size-3 size-2|size-1
last
one
position | 1 2 3 4 |
---------+----------------------------+--------------------
count | size-4 size-3 size-2 size-1|
last
one
看起来i
的最后一个有效值应始终小于数组的大小减去三(除非ArrayList太短,但你需要不同的代码 - 我以前的答案应该在那里工作)。因此,请将i < numbers.size()
替换为 i < numbers.size() - 3
,而不是我上面所说的。
答案 1 :(得分:0)
以下是更改后的reverse4
方法:
public static ArrayList<Integer> reverse4(ArrayList<Integer> numbers) {
ArrayList<Integer> reverseSet = new ArrayList<>();
for (int i = 0; i < numbers.size(); i += 4) {
if (i + 3 < numbers.size()) { // check if remaining number of elements less than 4
for (int k = i + 3; k >= i; k--)
reverseSet.add(numbers.get(k));
} else {
for (int k = i; k < numbers.size(); k++) {
reverseSet.add(numbers.get(k)); // add the remaining elements without reversing
}
}
}
return reverseSet;
}
请注意检查列表是否有剩余4个元素的新条件。