Java 在if语句中添加数组异常

Java 在if语句中添加数组异常,java,arrays,if-statement,Java,Arrays,If Statement,我有一个数组具有以下值[1,2,3,4,5] 当数组中的值为1,2,3时,我想打印一条消息。我该怎么做?:) 我想你可以这样做: if (myarray[0]==1 && myarray[1]==2 && myarray[2]==3) { ..... } public static boolean containsAll(int[] arrayToTest, int... values) { return asList(arrayToT

我有一个数组具有以下值[1,2,3,4,5]

当数组中的值为1,2,3时,我想打印一条消息。我该怎么做?:)

我想你可以这样做:

if (myarray[0]==1 && myarray[1]==2 && myarray[2]==3) {
     .....
    }
public static boolean containsAll(int[] arrayToTest, int... values) {
    return asList(arrayToTest).containsAll(asList(values));     
}

public static List<Integer> asList(int[] values) {
    List<Integer> asList = new ArrayList<Integer>(values.length);
    for (int intVal : values) {
        asList.add(intVal);
    }
    return asList;
}
int[] myarray = new int[] {1,2,3,4,5};
boolean result = containsAll(myarray, 1, 2, 3);

但如果可能的话,我会避免这样做。我希望避免数组中的位置成为一个因素。

不幸的是
数组。asList(myarray)
不适用于
int
,如注释中所述,我忘记了。。。 因此,使用
整数
作为数组类型或在
整数列表中首先转换:

   List<Integer> intList = new ArrayList<Integer>();
    for (int index = 0; index < myarray.length; index++)
    {
        intList.add(myarray[index]);
    }

不幸的是
array.asList(myarray)
不适用于
int
,正如注释中所指出的,我忘记了。。。 因此,使用
整数
作为数组类型或在
整数列表中首先转换:

   List<Integer> intList = new ArrayList<Integer>();
    for (int index = 0; index < myarray.length; index++)
    {
        intList.add(myarray[index]);
    }

较长的解决方案,但只需要一次。可以轻松定制以检查任意数量的项目

public boolean onFire(int array[])
{
    boolean found1 = false;
    boolean found2 = false;
    boolean found3 = false;
    for (int i : array) {
        if(i==1)
        {
            found1= true;
            continue;
        }
        if(i==2)
        {
            found2= true;
            continue;
        }
        if(i==3)
        {
            found3= true;
            continue;
        }
        if(found1&&found2&&found3)
            return true;
    }
    if(found1&&found2&&found3)
         return true;
    return false;       
}

较长的解决方案,但只需要一次。可以轻松定制以检查任意数量的项目

public boolean onFire(int array[])
{
    boolean found1 = false;
    boolean found2 = false;
    boolean found3 = false;
    for (int i : array) {
        if(i==1)
        {
            found1= true;
            continue;
        }
        if(i==2)
        {
            found2= true;
            continue;
        }
        if(i==3)
        {
            found3= true;
            continue;
        }
        if(found1&&found2&&found3)
            return true;
    }
    if(found1&&found2&&found3)
         return true;
    return false;       
}

如果你想要的
int
s是非负的、小的、密集的;您不关心它们在
ints
中的显示顺序,然后:

BitSet wanted = new BitSet();
wanted.set(1);
wanted.set(2);
wanted.set(3);

for (int i : ints) {
  wanted.clear(i);
}

boolean hasAll = wanted.cardinality() == 0;

如果您确实关心顺序,那么您可能需要测试一个数组是否是另一个数组的子序列:

如果您想要的
int
s是非负的、小的和密集的;您不关心它们在
ints
中的显示顺序,然后:

BitSet wanted = new BitSet();
wanted.set(1);
wanted.set(2);
wanted.set(3);

for (int i : ints) {
  wanted.clear(i);
}

boolean hasAll = wanted.cardinality() == 0;

如果您确实关心顺序,那么您可能需要测试一个数组是否是另一个数组的子序列:

要查找数组中任意顺序的元素,请首先将您感兴趣的元素添加到哈希映射中。然后查看它们是否在数组中

运行时:O(m)添加到map,在数组O(n)上迭代,m 在下面的代码中,调用main()运行我编写的示例

 Map<Integer,Boolean> lookFor = new HashMap<Integer,Boolean>();

 void main(){
    int[] array = new int[] {1,2,3,4,5};
    addMeaningfulValues();
    System.out.println( arrayHasValues(lookFor, array) );
 }

 void addMeaningfulValues(){
    lookFor.put(1,false);
    lookFor.put(2,false);
    lookFor.put(3,false);
 }

 boolean arrayHasValues(Map<Integer,Boolean> values, int [] array){
    //mark entries found in array
    for (int i=0; i<array.length; i++){
        if (values.containsKey(array[i])){
            values.put(array[i], true);
        }
    }

    //go over map entries and see if they have all been found in the array
    for (Boolean crtValue: values.values()){
        if (!crtValue){
            return false;
        }
    }

    return true;
 }
Map lookFor=newhashmap();
void main(){
int[]数组=新的int[]{1,2,3,4,5};
添加有意义的值();
System.out.println(arrayHasValues(lookFor,array));
}
void addmeaningfulfalues(){
lookfore.put(1,false);
lookfore.put(2,false);
lookfore.put(3,false);
}
布尔数组hasvalues(映射值,int[]数组){
//标记在数组中找到的条目

为了(inti=0;i找到数组中任意顺序的元素,首先将感兴趣的元素添加到哈希映射中,然后查看它们是否在数组中

运行时:O(m)添加到映射,在数组O(n)上迭代,m 在下面的代码中,调用main()运行我编写的示例

 Map<Integer,Boolean> lookFor = new HashMap<Integer,Boolean>();

 void main(){
    int[] array = new int[] {1,2,3,4,5};
    addMeaningfulValues();
    System.out.println( arrayHasValues(lookFor, array) );
 }

 void addMeaningfulValues(){
    lookFor.put(1,false);
    lookFor.put(2,false);
    lookFor.put(3,false);
 }

 boolean arrayHasValues(Map<Integer,Boolean> values, int [] array){
    //mark entries found in array
    for (int i=0; i<array.length; i++){
        if (values.containsKey(array[i])){
            values.put(array[i], true);
        }
    }

    //go over map entries and see if they have all been found in the array
    for (Boolean crtValue: values.values()){
        if (!crtValue){
            return false;
        }
    }

    return true;
 }
Map lookFor=newhashmap();
void main(){
int[]数组=新的int[]{1,2,3,4,5};
添加有意义的值();
System.out.println(arrayHasValues(lookFor,array));
}
void addmeaningfulfalues(){
lookfore.put(1,false);
lookfore.put(2,false);
lookfore.put(3,false);
}
布尔数组hasvalues(映射值,int[]数组){
//标记在数组中找到的条目

对于(inti=0;i将其放入集合或列表中,并对您要查找的每个项目进行包含

Integer[] myarray = {1,2,3,4,5};
List<Integer> intList = Arrays.asList(myArray);

if (intList.contains(1) && intList.contains(2) && intList.contains(3))
    // print your message
Integer[]myarray={1,2,3,4,5};
List intList=Arrays.asList(myArray);
if(intList.contains(1)和&intList.contains(2)和&intList.contains(3))
//打印您的邮件

将其放入一个集合或列表中,并对您要查找的每个项目进行包含

Integer[] myarray = {1,2,3,4,5};
List<Integer> intList = Arrays.asList(myArray);

if (intList.contains(1) && intList.contains(2) && intList.contains(3))
    // print your message
Integer[]myarray={1,2,3,4,5};
List intList=Arrays.asList(myArray);
if(intList.contains(1)和&intList.contains(2)和&intList.contains(3))
//打印您的邮件

您可以编写如下实用程序方法(假设数组已预先排序,如果不是这样,请查看更新内容):

印刷品:

true false
您可以编写一个实用程序方法,如下所示(假设数组是预先排序的,如果不是这种情况,请参阅更新)

印刷品:

true false
这并不漂亮,但如果你写了这样的东西:

if (myarray[0]==1 && myarray[1]==2 && myarray[2]==3) {
     .....
    }
public static boolean containsAll(int[] arrayToTest, int... values) {
    return asList(arrayToTest).containsAll(asList(values));     
}

public static List<Integer> asList(int[] values) {
    List<Integer> asList = new ArrayList<Integer>(values.length);
    for (int intVal : values) {
        asList.add(intVal);
    }
    return asList;
}
int[] myarray = new int[] {1,2,3,4,5};
boolean result = containsAll(myarray, 1, 2, 3);

这并不漂亮,但如果你写了这样的东西:

if (myarray[0]==1 && myarray[1]==2 && myarray[2]==3) {
     .....
    }
public static boolean containsAll(int[] arrayToTest, int... values) {
    return asList(arrayToTest).containsAll(asList(values));     
}

public static List<Integer> asList(int[] values) {
    List<Integer> asList = new ArrayList<Integer>(values.length);
    for (int intVal : values) {
        asList.add(intVal);
    }
    return asList;
}
int[] myarray = new int[] {1,2,3,4,5};
boolean result = containsAll(myarray, 1, 2, 3);
使用集合界面中的方法

Collection<Integer> coll = new ArrayList<Integer>();
Collection<Integer> test = new ArrayList<Integer>();

for( int i=1; i<=5; i++)
    coll.add(i);

test.add(1);
test.add(2);
test.add(3);

System.out.println(coll.containsAll(test));
Collection coll=new ArrayList();
集合测试=新建ArrayList();
对于(int i=1;i使用收集界面中的方法

Collection<Integer> coll = new ArrayList<Integer>();
Collection<Integer> test = new ArrayList<Integer>();

for( int i=1; i<=5; i++)
    coll.add(i);

test.add(1);
test.add(2);
test.add(3);

System.out.println(coll.containsAll(test));
Collection coll=new ArrayList();
集合测试=新建ArrayList();

对于(int i=1;i由于集合的广泛使用,被视为集合的java是一个框架,由一个方法组成的每个集合都包含(Object o),用于检查集合中是否存在元素

  • 首先我们可以将int[]数组转换为一个列表

    List<Integer> list=new ArrayList<Integer>();
            int[] myarray = new int[] {1,2,3,4,5};
            for(int i=0;i<myarray.length;i++)
            {
                list.add(myarray[i]);           
            }
    
  • 并检查下面的完整代码

    import java.io.IOException;
    import java.util.ArrayList;
    
    import java.util.List;
    
    
    
    public class Test {
    
    
        public static void main(String[] args) throws IOException {
            boolean flag=false;
            List<Integer> list=new ArrayList<Integer>();
            int[] myarray = new int[] {1,2,3,4,5};
            for(int i=0;i<myarray.length;i++)
            {
                list.add(myarray[i]);           
            }
            for(Integer i:list)
            {
                if(list.contains(1)&&list.contains(2)&&list.contains(3))
                {
                    flag=true;
                    break;
                }
    
            }
    
            if(flag)
            {
                System.out.println("yes contain");
    
            }
            else
                System.out.println("NO");
    
        }
    
    }
    
    import java.io.IOException;
    导入java.util.ArrayList;
    导入java.util.List;
    公开课考试{
    公共静态void main(字符串[]args)引发IOException{
    布尔标志=假;
    列表=新的ArrayList();
    int[]myarray=newint[]{1,2,3,4,5};
    
    对于(int i=0;i由于集合的广泛使用,被视为集合的java是一个框架,由一个方法组成的每个集合都包含(对象o),用于检查集合中是否存在元素

  • 首先我们可以将int[]数组转换为一个列表

    List<Integer> list=new ArrayList<Integer>();
            int[] myarray = new int[] {1,2,3,4,5};
            for(int i=0;i<myarray.length;i++)
            {
                list.add(myarray[i]);           
            }
    
  • 并检查下面的完整代码

    import java.io.IOException;
    import java.util.ArrayList;
    
    import java.util.List;
    
    
    
    public class Test {
    
    
        public static void main(String[] args) throws IOException {
            boolean flag=false;
            List<Integer> list=new ArrayList<Integer>();
            int[] myarray = new int[] {1,2,3,4,5};
            for(int i=0;i<myarray.length;i++)
            {
                list.add(myarray[i]);           
            }
            for(Integer i:list)
            {
                if(list.contains(1)&&list.contains(2)&&list.contains(3))
                {
                    flag=true;
                    break;
                }
    
            }
    
            if(flag)
            {
                System.out.println("yes contain");
    
            }
            else
                System.out.println("NO");
    
        }
    
    }
    
    import java.io.IOException;
    导入java.util.ArrayList;
    导入java.util.List;
    公开课考试{
    公共静态void main(字符串[]args)引发IOException{
    布尔标志=假;
    列表=新的ArrayList();
    int[]myarray=newint[]{1,2,3,4,5};
    
    for(int i=0;您要检查的值(在您的情况下为1,2,3)必须是数组的第一、第二和第三个元素?不,位置不应该很重要。您要检查的值(在您的情况下为1,2,3)必须是数组的第一、第二和第三个元素?不,位置不应该很重要。包含?:)@jk2
    Arrays.asList
    应用于
    int[]
    时返回的
    列表可能不是您想要的。啊,谢谢。我忘了导入ArrayList和List接口,这就是它不起作用的原因。where