2013-10-07 55 views
-2

在做java1001课程时,我们不做面向对象编程。我无法找出有关数组的这个问题。Java - 给定一个int数组,如果它包含2或3,则返回true

给定一个整数数组,打印真,如果它含有2或3 // {2,5} - >真// {4,3} - >真// {4,5} - >假//

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” 我怎样才能使它停止检查整个数组,如果第一个整数产量真的吗?

任何能帮助我的人?

感谢提前:)

+5

你应该自己弄清楚。只要你遇到2或3,你可以停止循环和打印真实。但是,如果您遇到其他数字,则只有到循环结束时才能打印出错误。使用变量保存结果并在完成时打印结果。 –

+0

这个问题似乎是脱离主题,因为它是关于“调试问题” –

+0

'if(<< found something >>){return;};' – 2013-10-07 12:13:24

回答

0

您可以通过使用关键字break开始,虽然这不会解决您的问题。

if(a[i] == 2 || a[i] == 3) { 
    System.out.println(true); 
    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); 
+3

这不会修复算法。它仍然会打印虚假的内容。 –

+2

不要忘记括号:) – nio

+0

看看我的编辑,加上伪代码。 – christopher

0

您可以使用boolean检查数组包含或,例如:

boolean isFound = false; 
for(int i = 0 ; i < a.length && !isFound; i++) { 
    isFound = a[i] == 2 || a[i] == 3; 
} 
System.out.println(isFound); 
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); 
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"); 
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); 
} 
相关问题