[英]How do I implement asking the user if they want to run my java program again?
[英]How do I prompt the user to run program again?
经过数小时的研究,我能够提出一个有帮助的while循环。 唯一的问题是它循环并且不要求用户再次运行。 它只是一遍又一遍地循环播放高尔夫球程序。 谁能指出出什么问题了? 目前正在上入门课,所以我可能不太了解。
import java.util.Scanner;
class GolfEM
{
public static void main (String[] args)
{
Scanner kb = new Scanner(System.in);
boolean go = true;
boolean run = true;
while (go==true)
{
while (run)
{
System.out.println("Enter par for the hole: ");
int par = kb.nextInt();
System.out.println("Enter the number of strokes: ");
int stroke = kb.nextInt();
{
if (stroke==1)
{
System.out.println("hole in one");
run=false;
}
else if (3==par-stroke)
{
System.out.println("double eagle");
run=false;
}
else if (2==par-stroke)
{
System.out.println("eagle");
run=false;
}
else if (1==par-stroke)
{
System.out.println("birdie");
run=false;
}
else if (par==stroke)
{
System.out.println("par");
run=false;
}
else if (-1==par-stroke)
{
System.out.println("bogey");
run=false;
}
else if (-2==par-stroke)
{
System.out.println("double-bogey");
run=false;
}
else if (-3==par-stroke)
{
System.out.println("triple-bogey");
run=false;
}
else if (-4==par-stroke)
{
System.out.println("four-over-par");
run=false;
}
else if (-5==par-stroke)
{
System.out.println("five-over-par");
run=false;
}
else if (-6==par-stroke)
{
System.out.println("six-over-par");
run=false;
}
else if (-7==par-stroke)
{
System.out.println("seven-over-par");
run=false;
}
else
{
System.out.println("Better luck next time");
run=false;
}
}
}
run=false;
}
if (run==false)
System.out.println("Run again? ");
char again = kb.next().charAt(0);
if (again == 'y')
{
run=true;
}
else if (again == 'n')
{
System.out.println("Goodbye.");
go = false;
}
else
{
System.err.println("Invalid answer");
}
}
}
您的代码有些错误。
我更改了下面的代码。 看看
import java.util.Scanner;
class GolfEM
{
public static void main (String[] args)
{
Scanner kb = new Scanner(System.in);
boolean run = true;
while (run)
{
System.out.println("Enter par for the hole: ");
int par = kb.nextInt();
System.out.println("Enter the number of strokes: ");
int stroke = kb.nextInt();
if (stroke==1) {
System.out.println("hole in one");
run=false;
}
else{
switch(par-stroke){
case 3:
System.out.println("double eagle");
break;
case 2:
System.out.println("eagle");
break;
case 1:
System.out.println("birdie");
break;
case 0:
System.out.println("par");
break;
case -1:
System.out.println("bogey");
break;
case -2:
System.out.println("double-bogey");
break;
case -3:
System.out.println("triple-bogey");
break;
case -4:
System.out.println("four-over-par");
break;
case -5:
System.out.println("five-over-par");
break;
case -6:
System.out.println("six-over-par");
break;
case -7:
System.out.println("seven-over-par");
break;
default:
System.out.println("Better luck next time");
}
}
run=false;
while(1){
System.out.println("Run again? ");
char again = kb.next().charAt(0);
if (again == 'y')
{
run=true;
break;
}
else if (again == 'n')
{
System.out.println("Goodbye.");
break;
}
else
{
System.err.println("Invalid answer");
}
}
}
}
}
如果我可以给出一些指针,则这里不需要两个while循环。 您实际上只需要一个(比方说,外面的一个,即“ go”循环)。
您的逻辑应该是这样的...
boolean go = true;
while (go) {
// get input...
// compute the result for this hole...
// get user input...
// decide whether to go again (go = false; or go = true;)
}
注意大括号。 像其他人建议的那样,从正确缩进代码开始。
正如其他成员建议的那样,使用适当的缩进。
在这里,您只是放了几个牙套。
更正的代码:
import java.util.Scanner;
class GolfEM
{
public static void main (String[] args)
{
Scanner kb = new Scanner(System.in);
boolean go = true;
boolean run = true;
while (go==true)
{
while (run)
{
System.out.println("Enter par for the hole: ");
int par = kb.nextInt();
System.out.println("Enter the number of strokes: ");
int stroke = kb.nextInt();
if (stroke==1) {
System.out.println("hole in one");
run=false;
}
else
if (3==par-stroke){
System.out.println("double eagle");
run=false;
}
else
if (2==par-stroke){
System.out.println("eagle");
run=false;
}
else
if (1==par-stroke){
System.out.println("birdie");
run=false;
}
else
if (par==stroke){
System.out.println("par");
run=false;
}
else
if (-1==par-stroke){
System.out.println("bogey");
run=false;
}
else
if (-2==par-stroke){
System.out.println("double-bogey");
run=false;
}
else
if (-3==par-stroke){
System.out.println("triple-bogey");
run=false;
}
else
if (-4==par-stroke){
System.out.println("four-over-par");
run=false;
}
else
if (-5==par-stroke){
System.out.println("five-over-par");
run=false;
}
else
if (-6==par-stroke){
System.out.println("six-over-par");
run=false;
}
else
if (-7==par-stroke){
System.out.println("seven-over-par");
run=false;
}
else{
System.out.println("Better luck next time");
run=false;
}
run=false;
}
if (run==false)
System.out.println("Run again? ");
char again = kb.next().charAt(0);
if (again == 'y')
{
run=true;}
else if (again == 'n')
{
System.out.println("Goodbye.");
go = false;}
else
{
System.err.println("Invalid answer");
}}
}
}
我没有真正看到内部run
循环的用途。 它只运行一次,然后将run
设置为false。 但是,我假设您的代码是初步的,以后将填写此部分。
关于您的实际问题:您的程序在无限循环中运行,因为询问用户是否再次运行该程序的部分不在 go
循环中。 只需将第一部分“大括号”向上移动,就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.