Java - 给定一个int数组,如果它包含2或3,则为true

时间:2013-10-07 11:59:05

标签: java arrays integer

我正在开设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,我怎么能让它停止检查整个数组呢?

任何可以帮助我的人吗?

提前致谢:)

5 个答案:

答案 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关键字,它将停止循环。

在这种情况下如何运作?

只要您的循环点击23,它就会打印出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");