检查数组是否包含整数或使用for循环

时间:2016-01-22 04:20:32

标签: java arrays

我创建了一个数组,并使用for循环来检查该数组是否包含输入整数:

import java.util.stream.IntStream;
import java.util.Arrays;

public class playGame {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int guess;
        int[] range = IntStream.rangeClosed(1, 100).toArray(); // Set the range from 1 - 100
        System.out.println(Arrays.toString(range));

        System.out.println("Please type a number ");
        guess = TextIO.getlnInt();
        for(int i:range) { // Check if input value is in range or not
            if( i == guess){
                System.out.println("good job");
        //...
    }
    //...
}

这很有效;但是,当我:

  1. ( i == guess)替换为(i != guess) // if guess not in range。无论输入整数是否在1-100范围内,Java总是打印出“好工作”。

  2. 当我添加像else { System,out.println("terrible"); }这样的else语句或使用break;打破循环时; 它总是打印“可怕”或打印是否在整数范围内。

  3. 如果不在1-100范围内,如何再次询问人们输入整数。我应该使用嵌套循环,还是更简单?

  4. 请帮我解决这3个问题。

3 个答案:

答案 0 :(得分:0)

我建议你在数组值上建立java.util.HashSet,并使用它来检查是否包含给定数字。

Set<Integer> mySet=new HashSet<Integer>(Arrays.asList(range));
boolean guessIsContained=mySet.contains(guess);

如果你想循环一个用户输入,直到猜测没问题,你就可以将整个操作包含在while中并且具有正确的退出条件:

Set<Integer> mySet=...
do
{
     // ... input one guess from user.
     boolean guessIsContained=mySet.contains(guess);
     // ... evaluate guessIsContained

} while (!guessIsContained);

答案 1 :(得分:-2)

首先,i等于guess,无论如何我都需要在范围内...我发现这是矛盾的。无论如何,要做到这一点没有for循环:

 if(1<=i<=100 && i == guess){
            System.out.println("good job");

}

如果1<=i<=100,则它在范围内。这使得for循环成为一个if语句,并将它与你的其他if语句结合起来,然后放入&& i == guess

1)应该使用上面的代码

2)我不明白你的意思,但来自官方的java文档:

  

未标记的break语句终止最里面的开关,对于,   while,或do-while语句,但带标签的断点终止外部   言。

3)尝试以下方法:

if(1<=i<=100 && i == guess){
                System.out.println("good job");

    }else if(i<1 || i>100)
 System.out.println("Please type a number in range");
    guess = TextIO.getlnInt();

答案 2 :(得分:-2)

不使用数组和for循环将解决您的所有问题。尝试

if (guess >= 1 && guess <= 100) {
    System.out.println("good job");
} else {
    System.out.println("terrible");
}

1)让我们假设猜= = 10.你的for循环将打印“好工作”99次。因为10!= 1,10!= 2,10 == 10,10!= 100。

2)因为猜测是!=我再次99次。

3)在打印“好工作”后使用while(true)循环和中断。