如何让我的程序根据特定情况重复?
How do I make my program repeat according to certain circumstances?
import java.util.Scanner;
public class MyFirstGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please Enter A Number: ");
double s = scanner.nextDouble();
double randomNumber = Math.random();
double realNumber = randomNumber*10;
double realerNumber = Math.round(realNumber);
System.out.println(realerNumber);
if(s==realerNumber) {
System.out.println("You Win!");
} else {
System.out.println("Try Again...");
}
}
}
所以我想做的是为我的 Java class 制作一个 "game"。我生成了一个 1 到 10 之间的随机数,用户必须输入一个数字,如果输入和随机数相同,他们 "win." 如果他们输了,他们会再试一次......?首先,我做了所有我什至不完全理解的必要扫描仪工作。我只是复制了教授。所以程序说输入一个数字,然后程序生成一个介于 0.0 和 1.0 之间的数字。我将该数字乘以 10 使其介于 1 和 10 之间。然后我将数字四舍五入为最接近的整数。如果输入与这个数字匹配,程序就会说你赢了。如果没有,它会说再试一次。
问题是如何使程序重复运行而无需用户使用 cmd 重新启动程序?我需要重复输入、随机数生成器,然后是结果。我需要做什么?另外,我的程序怎么样?我的第二个大的……是的……大。但说真的,我怎样才能让它不那么复杂或有什么改进的地方。谢谢
使用 while
循环:
long realerNumber = Math.round(realNumber);
// first guess
long guess = scanner.nextLong();
while (guess != realerNumber) {
System.out.println("Try Again...");
// guess again
guess = scanner.nextInt();
}
System.out.println("You Win!");
已经有一个class生成随机数,你可以使用它:
// TODO: move to constant
int MAX = 10;
// nextInt(int n) generates a number in the range [0, n)
int randomNumber = new Random().nextInt(MAX + 1)
只需将您的代码放入 do-while 循环
Scanner scanner = new Scanner(System.in);
do
{
System.out.println("Please Enter A Number: ");
double s = scanner.nextDouble();
double realerNumber = Math.round( Math.random() * 10 );
System.out.println(realerNumber);
if(s==realerNumber) {
System.out.println("You Win!");
} else {
System.out.println("Try Again...");
}
}
while(someCondition);
someCondition
可以是一个计数器(如果你想玩 n 次只需将计数器设置为 n并在每次循环迭代时减少它,然后检查它是否在 while 中为 0)或检查是否按下某个键的某些函数(如 escape)
int n = 5;
do
{
n--;
...
}
while(n > 0);
这将 运行 永远,但这是第一条评论中提到的想法
...
Scanner scanner = new Scanner(System.in);
while(true){ // add this after Scanner ... declaration
...
} // end of existing else block
} // end of while loop, so add this single brace
...
import java.util.Scanner;
public class MyFirstGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please Enter A Number: ");
double s = scanner.nextDouble();
double randomNumber = Math.random();
double realNumber = randomNumber*10;
double realerNumber = Math.round(realNumber);
System.out.println(realerNumber);
if(s==realerNumber) {
System.out.println("You Win!");
} else {
System.out.println("Try Again...");
}
}
}
所以我想做的是为我的 Java class 制作一个 "game"。我生成了一个 1 到 10 之间的随机数,用户必须输入一个数字,如果输入和随机数相同,他们 "win." 如果他们输了,他们会再试一次......?首先,我做了所有我什至不完全理解的必要扫描仪工作。我只是复制了教授。所以程序说输入一个数字,然后程序生成一个介于 0.0 和 1.0 之间的数字。我将该数字乘以 10 使其介于 1 和 10 之间。然后我将数字四舍五入为最接近的整数。如果输入与这个数字匹配,程序就会说你赢了。如果没有,它会说再试一次。
问题是如何使程序重复运行而无需用户使用 cmd 重新启动程序?我需要重复输入、随机数生成器,然后是结果。我需要做什么?另外,我的程序怎么样?我的第二个大的……是的……大。但说真的,我怎样才能让它不那么复杂或有什么改进的地方。谢谢
使用 while
循环:
long realerNumber = Math.round(realNumber);
// first guess
long guess = scanner.nextLong();
while (guess != realerNumber) {
System.out.println("Try Again...");
// guess again
guess = scanner.nextInt();
}
System.out.println("You Win!");
已经有一个class生成随机数,你可以使用它:
// TODO: move to constant
int MAX = 10;
// nextInt(int n) generates a number in the range [0, n)
int randomNumber = new Random().nextInt(MAX + 1)
只需将您的代码放入 do-while 循环
Scanner scanner = new Scanner(System.in);
do
{
System.out.println("Please Enter A Number: ");
double s = scanner.nextDouble();
double realerNumber = Math.round( Math.random() * 10 );
System.out.println(realerNumber);
if(s==realerNumber) {
System.out.println("You Win!");
} else {
System.out.println("Try Again...");
}
}
while(someCondition);
someCondition
可以是一个计数器(如果你想玩 n 次只需将计数器设置为 n并在每次循环迭代时减少它,然后检查它是否在 while 中为 0)或检查是否按下某个键的某些函数(如 escape)
int n = 5;
do
{
n--;
...
}
while(n > 0);
这将 运行 永远,但这是第一条评论中提到的想法
...
Scanner scanner = new Scanner(System.in);
while(true){ // add this after Scanner ... declaration
...
} // end of existing else block
} // end of while loop, so add this single brace
...