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

Java 检查数组是否包含整数或未使用for循环,java,arrays,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

我创建了一个数组,并使用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");
        //...
    }
    //...
}
这很有效;然而,当我:

  • (i==guess)
    替换为
    (i!=guess)//如果guess不在范围内
    。无论输入的整数是否在1-100范围内,Java都会打印“good job”

  • 当我添加else语句时,比如
    else{System,out.println(“可怕”);}
    或使用
    break以打破循环;
    它总是打印“可怕”或打印是否在范围内的整数

  • 如果输入整数不在1-100范围内,我如何再次要求人们输入整数。我应该使用嵌套循环,还是有更简单的循环


  • 请帮我解决这三个问题。

    首先,要使
    i
    等于
    guess
    ,我必须在范围之内……我发现这是矛盾的。无论如何,要在没有for循环的情况下执行此操作:

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

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

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

    if(guess>=1&&guess我建议您在数组值上构建一个
    java.util.HashSet
    ,并使用它轻松检查数组中是否包含给定的数字

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

    编辑您的帖子并粘贴完整的代码谢谢,我遇到了1和2的问题。在这个例子中,我有数字1和100,但是如果我只是有一个范围,而不知道它是绑定的?是随机的还是从输入中获取的?这没关系。如果运行IntStream.rangeClosed(a,b)(a&b范围限制)或者(guess>=a&&guess使用if子句的另一个优点是可以使用浮点值作为输入。您将无法创建一个包含从1到100OK的所有浮点值的数组。看来查找边界和if语句确实是最简单的方法。感谢您的帮助。您好,我无法在新HashSet?和无论猜测是否在1-100范围内,结果总是错误的?
    Set<Integer> mySet=new HashSet<Integer>(Arrays.asList(range));
    boolean guessIsContained=mySet.contains(guess);
    
    Set<Integer> mySet=...
    do
    {
         // ... input one guess from user.
         boolean guessIsContained=mySet.contains(guess);
         // ... evaluate guessIsContained
    
    } while (!guessIsContained);