我正在互联网上学习java,比如“oracle academy”,并使用谷歌搜索如何做事,我想做一个简单的java程序,需要一个数字(天)数字或单词(月)和另一个数字(年),所以如果您输入类似
的内容"3" "1" and "1993"
输出
"January 1st, 1993"
如果您输入类似
的内容"2" "July" and "1992"
输出
"7/2/1992"
我已经知道如何使用“case”和while循环来告诉你是否输入错误的东西,但在“day”部分我尝试使用while循环来继续要求你输入一些东西,如果输入不是介于1和31之间的数字但是我无法使用return命令从while循环返回数字,有没有办法在不使用return命令的情况下返回数字? 代码:
public static void main(String[] args) {
String x;
Scanner scan = new Scanner(System.in);
//day
System.out.println("Insert Day");
while (1 < 2){
x = scan.nextLine();
if (x.matches(".*\\d.*")){
q = Integer.parseInt(x);
if ((0 < q) && (q < 32)){
return q;
}
else {
System.out.println("please use a valid number");
}
}
else {
System.out.println("please use a number");
}
}
System.out.println(q);
答案 0 :(得分:3)
如果您将其重构为单独的函数,则可以使用return
:
public static int getDay() {
Scanner scan = new Scanner(System.in);
System.out.println("Insert Day");
while (true){
line = scan.nextLine();
if (line.matches(".*\\d.*")){
int day = Integer.parseInt(line);
if (0 < day && day < 32){
return day;
} else {
System.out.println("please use a valid number");
}
} else {
System.out.println("please use a number");
}
}
}
public static void main(String[] args) {
int day = getDay();
System.out.println(day);
}
或者您可以使用break
:
Scanner scan = new Scanner(System.in);
System.out.println("Insert Day");
int day = -1;
while (true){
line = scan.nextLine();
if (line.matches(".*\\d.*")){
day = Integer.parseInt(line);
if (0 < day && day < 32){
break;
} else {
System.out.println("please use a valid number");
}
} else {
System.out.println("please use a number");
}
}
或者您可以使用while
条件:
int day = -1;
Scanner scan = new Scanner(System.in);
System.out.println("Insert Day");
while (day < 1 || day > 31){
line = scan.nextLine();
if (line.matches(".*\\d.*")){
day = Integer.parseInt(line);
if (day < 1 || day > 31){
System.out.println("please use a valid number");
}
} else {
System.out.println("please use a number");
}
}
此外,您可以使用NumberFormatException
parseInt
抛出来简化代码,而不是尝试使用正则表达式自行验证代码:
int day = -1;
Scanner scan = new Scanner(System.in);
System.out.println("Insert Day");
while (day < 1 || day > 31){
line = scan.nextLine();
try {
day = Integer.parseInt(line);
if (day < 1 || day > 31){
System.out.println("please use a valid number");
}
} catch (NumberFormatException e) {
System.out.println("please use a number");
}
}
答案 1 :(得分:1)
return
语句会返回您所在的整个方法中的值。但是您在main
,它不能返回值(void
)。< / p>
如果要在具有良好值时结束while
循环,请使用break
语句跳出while
循环。然后,控制转到循环结束后的下一个语句。