Java 在if语句中添加数组异常
我有一个数组具有以下值[1,2,3,4,5] 当数组中的值为1,2,3时,我想打印一条消息。我该怎么做?:) 我想你可以这样做: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
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)必须是数组的第一、第二和第三个元素?不,位置不应该很重要。包含?:)@jk2Arrays.asList
应用于int[]
时返回的列表可能不是您想要的。啊,谢谢。我忘了导入ArrayList和List接口,这就是它不起作用的原因。where