Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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-从列表打印值_Java_Arrays_List_For Loop_Println - Fatal编程技术网

java-从列表打印值

java-从列表打印值,java,arrays,list,for-loop,println,Java,Arrays,List,For Loop,Println,我有这个代码,当有三个连续值,即false、false、true或true、true、true、false时,它可以正常工作,但当我放置非连续值,即false、true、false、true或true、false、true、false时,它会忽略第一个值或最后一个值 if语句用于合并相同的值,就像有两个或三个连续的值一样。代码将输出显示为merge,例如,如果值为false、false、false、true,则输出如下: [0 12假,12 15真] 如果值为false、false、true、t

我有这个代码,当有三个连续值,即false、false、true或true、true、true、false时,它可以正常工作,但当我放置非连续值,即false、true、false、true或true、false、true、false时,它会忽略第一个值或最后一个值

if语句用于合并相同的值,就像有两个或三个连续的值一样。代码将输出显示为merge,例如,如果值为false、false、false、true,则输出如下:

[0 12假,12 15真]

如果值为false、false、true、true,则输出如下

[0 10假,10 15真]

但问题是,当我输入值,比如false,true,false,true时,输出是

[5 10正确,10 12错误,12 15正确]

虽然它应该类似于[0 5 false,5 10 true,10 12 false,12 15 true],因为它忽略了第一个值,而true,false,true,false值的情况也是如此,但它忽略了第一个值

下面是我的代码

package com.company;

import java.util.*;

public class Main {

static List<signal> list = new ArrayList<signal>();
static List<signal> list1 = new ArrayList<signal>();
static List<signal> res = new ArrayList<signal>();

static void add1() {
    signal [] s = new signal[4];
    s [0] = new signal(0,5,false);
    s [1] = new signal(5,10,true);
    s [2] = new signal(10,12,false);
    s [3] = new signal(12,15,true);

    for (int i = 0 ; i<s.length-1; i++)
    {
        if(s[i].v ==s[i+1].v && s[i].b == s[i+1].a)
        {
            s[i].b = s[i+1].b;
            s[i+1].a = s[i].a;

            list.add(s[i+1]);
            list.remove(s[i]);
            System.out.println(list.toString());
        }
        else
        {
            list.add(s[i+1]);
            System.out.println(list.toString());
        }
    }
}

当前循环不会处理所有值,它会从0到s.length-1进行迭代,因此如果所有信号都不同且无法合并,则最后一个信号将丢失

最简单的解决方法是将s[0]添加到列表中,然后从1迭代到s.length,从而确保所有信号都得到处理

接下来,为了打印列表中的每个更改,最好实现一个单独的方法addAndPrintSignal

此外,最好避免在方法add1中硬编码输入信号数组,并将其作为vararg add1信号传递。。。

专用静态无效添加和打印信号列表信号列表,信号s{ signalList.adds; System.out.printlnsignalList.toString; } 静态无效添加1信号。。。{ System.out.printlnadd1:+Arrays.toString; 如果null==s | | 0==s.length{ 回来 } addAndPrintSignallist,s[0]; 对于int i=1;i add1:null 地址1:[] 地址1:[0 5假,5 10假,10 12真,12 15真] [0.5错误] [0 10错误] [0 10假,10 12真] [0 10假,10 15真] 地址1:[0 5假,5 10真,10 12假,12 15真] [0 10假,10 15真,0 5假] [0 10假,10 15真,0 5假,5 10真] [0 10假,10 15真,0 5假,5 10真,10 12假] [0 10假,10 15真,0 5假,5 10真,10 12假,12 15真]
非常感谢你。很清楚