Java 检查数组是否包含整数或未使用for循环
我创建了一个数组,并使用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
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{System,out.println(“可怕”);}
或使用break代码>以打破循环;
它总是打印“可怕”或打印是否在范围内的整数
请帮我解决这三个问题。首先,要使
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);