我正在开设java1001课程,所以我们不做面向对象的编程。我在解决有关阵列的问题时遇到了麻烦。
给定一个int数组,如果它包含2或3,则打印true。 {2,5} - >真的// {4,3} - >真的// {4,5} - > false //
Scanner keyboard = new Scanner(System.in);
int size = keyboard.nextInt();
int[] a = new int[size];
for(int i = 0 ;i<a.length;i++)
a[i] = keyboard.nextInt();
for(int i = 0 ;i<a.length;i++)
if(a[i] == 2 || a[i] == 3)
System.out.println(true);
else
System.out.println(false);
测试时会产生“truefalse”,“falsetrue”和“falsefalse” 如果第一个整数产生true,我怎么能让它停止检查整个数组呢?
任何可以帮助我的人吗?
提前致谢:)
答案 0 :(得分:1)
How can I make it stop examining the entire array if the first integer yields true?
如果你想单独检查数组中的第一个整数,你可以这样做:
for(int i = 0; I < a.length; i++)
if(a[i] == 2 || a[i] == 3)
{
System.out.println(true);
break;
}
if (i == a.length)
System.out.println(false);
至少在理论上,您甚至可以将整个代码整合到一个循环中以获得更好的性能。 考虑:
Scanner keyboard = new Scanner(System.in);
int size = keyboard.nextInt();
int[] a = new int[size];
int pos = -1;
for(int i = 0; i < a.length; i++)
{
a[i] = keyboard.nextInt();
if(pos != -1)
{
if((a[i] == 2 || a[i] == 3) && )
{
pos = i;
}
}
}
if(pos == -1)
{
System.out.println(false);
}
else
{
System.out.println(true + " (index = " + pos);
}
答案 1 :(得分:0)
您可以先使用break
关键字,但不会解决您的问题。
if(a[i] == 2 || a[i] == 3) {
System.out.println(true);
break;
}
休息做什么?
Break只是停止它在循环中所做的事情。如果您在for loop
中骑车而又不需要再循环,请使用break
关键字,它将停止循环。
在这种情况下如何运作?
只要您的循环点击2
或3
,它就会打印出true
。然后它会点击break
,循环结束。
如果它遇到任何其他内容,它将移至else
,并打印false
。然而,这不是所希望的,所以我们将以稍微不同的方式做到这一点。这是伪代码:
boolean b = false;
for( i from 0 to size)
{
if this is a 2 or a 3
b = true;
break;
}
// Print the result.
System.out.println(b);
答案 2 :(得分:0)
您可以使用boolean
检查数组是否包含 2 或 3 ,例如:
boolean isFound = false;
for(int i = 0 ; i < a.length && !isFound; i++) {
isFound = a[i] == 2 || a[i] == 3;
}
System.out.println(isFound);
答案 3 :(得分:0)
试试这个:
int tam = a.length;
for(int i = 0 ;i<tam;i++)
if(a[i] == 2 || a[i] == 3)
{
System.out.println(true);
tam = -1;
}
else if (tam == a.length)
System.out.println(false);
答案 4 :(得分:0)
我希望下面的内容会对你有所帮助
Scanner keyboard = new Scanner(System.in);
int size = keyboard.nextInt();
int[] a = new int[size];
boolean flag = false;
for(int i = 0 ;i<a.length;i++)
a[i] = keyboard.nextInt();
for(int i = 0 ;i<a.length;i++)
if(a[i] == 2 || a[i] == 3){
flag = true;
break;
}
if(flag)
System.out.println("True");
else
System.out.println("False");