数组java打印列表中的值
我有这个代码,当有三个连续值(即假、假、假、真或真、真、真、假)时,它工作正常,但当我输入非连续值(即假、真、假、真或真、假、真)时,它会丢失第一个值或最后一个值
if
语句用于合并相同的值,就像有两个或三个连续的值一样,代码将输出显示为merge,例如,如果值为false、false、false、true,则输出如下:
[ 0 12 false, 12 15 true]
如果值为false、false、true、true,则输出如下
[ 0 10 false, 10 15 true]
但是这里有一个问题当我输入类似(即false,true,false,true)的值时,输出是
[ 5 10 true, 10 12 false, 12 15 true]
尽管它应该像[0 5假,5 10真,10 12假,12 15真]一样,因为它忽略了第一个值,而真,假,真,假值的情况也一样,它忽略了第一个值
下面是我的代码
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());
}
}
}
# 1 楼答案
当前循环不会处理所有值,它会从
0
到s.length - 1
进行迭代,因此如果所有信号都不同且无法合并,则最后一个信号将丢失最简单的解决方法是将s[0]添加到
list
,然后从1迭代到s.length
,从而确保所有信号都得到处理接下来,为了将每个更改打印到
List<signal>
,最好实现一个单独的方法addAndPrintSignal
此外,最好避免在方法
add1()
内硬编码输入信号数组,并将其作为varargadd1(signal ... s)
传递输出