我正在使用Ubuntu 14.04.3 LTS,我正在从书中学习Java.我尝试用Ubuntu终端关注本书的一个例子,我正在使用Sublime Text.这是代码
import java.util.Scanner;
public class RepeatAdditionQuiz{
public static void main(String[] args){
int number1 = (int)(Math.random()%10);
int number2 = (int)(Math.random()%10);
Scanner input = new Scanner(System.in);
System.out.print(
"What is "+number1+" + "+number2+"?");
int answer = input.nextInt();
while(number1+number2 != answer){
System.out.print("Wrong answer. Try again. What is "
+number1+" + "+number2+"? ");
answer = input.nextInt();
}
System.out.println("You got it!");
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是,当我编译并执行它时.它给了我结果
什么是0 + 0?_
每次.它假设给我一个随机数,是的,它可以是0.但我尝试运行它超过10次,它一直给我0 + 0,当它假设从0-9随机.
当我输入0时,0 + 0的结果很好,它让我退出循环
我错过了一些让数学库有效的东西吗?我该如何解决随机问题?
Math.random()返回0(包括)和1(不包括)之间的double值.它不返回整数值.因此,当您获取由Math.random()模10 生成的数字时,它将返回相同的double值.最终的强制转换int使该值始终为0.
运行以下代码以查看自己:
double random = Math.random();
System.out.println(random); // for example 0.5486395326203879
System.out.println(random % 10); // still 0.5486395326203879
System.out.println((int) (random % 10)); // outputs 0
Run Code Online (Sandbox Code Playgroud)
你真正想要的是使用一个Random对象和使用Random.nextInt(bound).要获得0到9之间的随机整数,您可以使用:
Random random = new Random();
int value = random.nextInt(10);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |