gpt4 book ai didi

java - 您可以在不使用 return 命令的情况下从 while 循环返回字符串吗?

转载 作者:行者123 更新时间:2023-12-01 18:46:23 25 4
gpt4 key购买 nike

我正在互联网上的“oracle academy”等网站上学习java,并使用Google搜索如何做某事,我想制作一个简单的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);

最佳答案

如果将其重构为单独的函数,则可以使用 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);
}

或者您可以使用中断:

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");
}
}

关于java - 您可以在不使用 return 命令的情况下从 while 循环返回字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com