2013-10-07 54 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); 
} 
相關問題