java-从列表打印值
我有这个代码,当有三个连续值,即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值的情况也是如此,但它忽略了第一个值 下面是我的代码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
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
非常感谢你。很清楚