我正在尝试要求用户输入0到9之间的数字。如果他们输入正确的号码,程序将终止,但如果没有输入,他们有三次机会获得正确的号码,直到要求他们再次重新运行该程序。
到目前为止,这是我的代码:
import java.util.Scanner;
public class DoWhileLoop
{
public static void main(String[] args)
{
int a = 1;
Scanner keyboard = new Scanner(System.in);
do{
a++;
System.out.println("Please enter a number 0-9");
int value = keyboard.nextInt();
if(value == 1)
{
System.out.println("one");
}
else if(value == 2)
{
System.out.println("two");
}
else if(value == 3)
{
System.out.println("three");
}
else if(value == 4)
{
System.out.println("four");
}
else if(value == 5)
{
System.out.println("five");
}
else if(value == 6)
{
System.out.println("six");
}
else if(value == 7)
{
System.out.println("seven");
}
else if(value == 8)
{
System.out.println("eight");
}
else if(value == 9)
{
System.out.println("nine");
}
if (value <= 9) {
break;
}
}while (a <= 3);
System.out.println("Please rerun the program and enter a number 0-9");
}
}
如果您对如何做有任何建议,将不胜感激。
答案 0 :(得分:0)
您可以改用如下代码:
if (condition) {
return value1
} else {
return value2
}
// No return value needed here
答案 1 :(得分:0)
您的尝试看起来非常接近您想要实现的目标。
您当前具有以下代码,如果用户输入的数字小于或等于9,则该代码将导致程序终止
if (value <= 9) {
break;
}
为了严格满足以下要求:如果用户输入0到9之间的数字,程序将终止,也许此检查应类似于:
if (value >=0 && value <=9) {
break;
}
在Java中,可以在if语句中使用&&运算符,以确保if语句中的代码仅在&&两侧的两个条件都为true时才执行。
为什么还不添加一条打印语句,提示用户输入了正确的答案?例如
if (value >=0 && value <=9) {
System.out.println("Correct");
break;
}
就您当前的代码而言,如果用户输入大于9的任何数字超过3次,则该代码已经退出,这很好。我认为,如果您修复了我上面提到的if语句,那么您应该更接近预期的行为。
最后要注意的是,程序将调用此行
System.out.println("Please rerun the program and enter a number 0-9");
无论do-while循环如何退出。如果您希望程序在用户输入正确的猜测时完全终止,而无需打印此行,则可以添加return语句而不是break:
if (value >=0 && value <=9) {
System.out.println("Correct");
return;
}
这将导致main方法“返回”,而不是继续执行任何其他指令,这将导致程序终止
答案 2 :(得分:0)
以下是一些阅读材料:https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html
return语句用于从方法中返回值。
例如,如果您要创建能够将两个数字相除的类号,则可以返回函数的resultat并像在System.out.println中那样使用它。
public class Number
{
public static void main(String[] args)
{
System.out.println(divide(4, 5));
System.out.println(divide(4,0));
}
public static float divide(int a, int b)
{
if(b == 0) {
throw new IllegalArgumentException("Error you can't divide by zero !");
}
return a / b;
}
}
对于抛出来说,它有点复杂,在Java中可能会发生异常,例如您不能将其除以0。在这种情况下,抛出异常,在这种情况下为IllegalargumentException。
最后,方法main的名称很好,因为它是程序的主要方法,是要执行的第一个方法,如果程序没有错误,则是最后一个,这意味着如果您退出此方法,您将退出程序。 / p>
答案 3 :(得分:0)
您必须在代码末尾将“ a ++”移动到else语句中。像这样:
import java.util.Scanner;
public class DoWhileLoop {
public static void main(String[] args) {
int a = 0;
Scanner keyboard = new Scanner(System.in);
do{
System.out.println("Please enter a number 0-9");
int value = keyboard.nextInt();
if(value == 1){System.out.println("one");}
else if(value == 2) {System.out.println("two");}
else if(value == 3) {System.out.println("three");}
else if(value == 4){System.out.println("four");}
else if(value == 5){System.out.println("five");}
else if(value == 6){System.out.println("six");}
else if(value == 7){System.out.println("seven");}
else if(value == 8){System.out.println("eight");}
else if(value == 9){System.out.println("nine");}
if (value <= 9) {break;}
else {a++;}
}
while (a < 3);
if (a == 3) {System.out.println("You've used all your attemps.");}
}
}