Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-仅对递增元素遍历ArrayList_Java_Arraylist - Fatal编程技术网

Java-仅对递增元素遍历ArrayList

Java-仅对递增元素遍历ArrayList,java,arraylist,Java,Arraylist,这是我的ArrayList: [1,2,1,0,3,4] 我正试图退回这个: [1,2,3,4] 以下是我目前的尝试: for (int i = 0; i < myArray.size() - 1; i++) { if (myArray.get(i) < myArray.get(i + 1)) { System.out.println("Increasing sequence..."); }

这是我的ArrayList:

[1,2,1,0,3,4]
我正试图退回这个:

[1,2,3,4]
以下是我目前的尝试:

    for (int i = 0; i < myArray.size() - 1; i++) {
        if (myArray.get(i) < myArray.get(i + 1)) {
            System.out.println("Increasing sequence...");
                }
      }

但是,这不会返回所需的输出,有什么想法吗?

您必须维护打印的最后一个元素的索引或值,并将其存储在某个变量中。然后,必须为每个新元素使用存储元素,并检查是否大于存储元素

正如您所提到的,无论如何,第一个元素都必须打印出来

类似的方法可能会奏效:

List<Integer> myArray = Arrays.asList(new Integer[]{1,2,1,0,3,4});
System.out.println(myArray.get(0));
int prevPrint = myArray.get(0);
for (int i = 1; i < myArray.size();i++) {
    if (myArray.get(i) > prevPrint) {
        System.out.println(myArray.get(i));
        prevPrint = myArray.get(i);
    }
}
程序失败的原因是因为您只比较了相邻的两个值,并且可能已经打印了一个大于两个相邻值中任何一个的值

一个类似的问题,但存在一种完全不同的方法,可以在上找到一个微小的变体,以避免重复System.out.println:

试试这个

public static List<Integer> findIncreasingOrder(int[] nums) {
    List<Integer> result = new ArrayList<>();
    int MAX = Integer.MIN_VALUE;
    for (int i = 0; i < nums.length; i++) {
        int value = nums[i];
        if (value >MAX){
            System.out.println(value);
            MAX = value;
            result.add(value);
        }
    }
    return result;
}

为什么在结果中的32个第三元素后面保留27?因为在我可以更好地用文字描述代码之后,27会增加到28,所以代码实际上应该做什么?我无法从您当前的示例中理解。apublic static List<Integer> findIncreasingOrder(int[] nums) { List<Integer> result = new ArrayList<>(); int MAX = Integer.MIN_VALUE; for (int i = 0; i < nums.length; i++) { int value = nums[i]; if (value >MAX){ System.out.println(value); MAX = value; result.add(value); } } return result; }