我创建了一个数组,并使用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) // if guess not in range
。无论输入整数是否在1-100范围内,Java总是打印出“好工作”。
当我添加像else { System,out.println("terrible"); }
这样的else语句或使用break;
打破循环时;
它总是打印“可怕”或打印是否在整数范围内。
如果不在1-100范围内,如何再次询问人们输入整数。我应该使用嵌套循环,还是更简单?
请帮我解决这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)循环和中断。