2016-04-23 23 views
2
int[] Scores={2,3,8,7,1,4,9}; 

int kema=7; 
boolean T=true; 
boolean F=false; 

for(int value : Scores) 
    if(kema == value) { 
     System.out.println(T); 
     break; 
    } 

system.out.println(F); 

我需要更正代碼返回true如果值是在數組中,否則返回false。但是這個代碼使用(for in)循環返回它們兩個。我需要更正代碼以返回true,如果值在數組中,否則返回false。但這個代碼返回他們兩個使用(for)循環

+2

使用一個變量'boolean found',以便您可以使用'if' /'else'來代替剛剛打破循環。 – Jack

+0

@Satya它不起作用,它給了我這個輸出[false false false true] –

+0

@Jack如果您不介意請,您可以使用布爾發現編寫代碼? –

回答

1

在Java 8+你可以使用一個IntStream 和像

System.out.println(IntStream.of(Scores).anyMatch(x -> x == kema)); 

東西在早期版本的Java,您可以提取邏輯到像

public static boolean contains(int[] arr, int val) { 
    for (int v : arr) { 
     if (v == val) { 
      return true; 
     } 
    } 
    return false; 
} 

然後叫它像

System.out.println(contains(Scores, kema)); 

另外,按照慣例,變量應小寫字母開頭。

+0

我只是好奇,但* *引擎蓋*是否將Java 8 + IntStream轉換爲早期版本的Java實現? –

+0

非常感謝:) –

+1

@JonnyHenly類似的東西,如果你看看['Stream.anyMatch(Predicate)'](https://docs.oracle.com/javase/8/docs/api/java/util /stream/Stream.html#anyMatch-java.util.function.Predicate-)Javadoc,它表示*此方法評估流中元素的謂詞的存在量化(對於某些x P(x))*;我認爲這就是我的版本所做的,但*存在主義*實際上並不是我的哲學特色。 –

3

像用戶Jack建議在您的問題的意見。使用布爾值來跟蹤在數組中是否找到該值。

int[] Scores={2,3,8,7,1,4,9}; 

int kema = 7; 
boolean T = true; 
boolean F = false; 
boolean found = false; 

for(int value : Scores) { 
    if(kema == value) { 
     found = true; 
     break; 
    } 
} 

if(found) { 
    System.out.println(T); 
} else { 
    System.out.println(F); 
} 

您也不需要有兩個布爾表示true和false,一個布爾值是true或false。所以下面也可以工作:

int[] Scores={2,3,8,7,1,4,9}; 

int kema = 7; 
boolean found = false; 

for(int value : Scores) { 
    if(kema == value) { 
     found = true; 
     break; 
    } 
} 

System.out.println(found); 
+0

非常感謝:) –

+0

不客氣! –

相關問題