2016-04-23 40 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

不客气! –