英文:
How do I make a loop that commands the user to keep inputing a value until If conditions are met, with the aid of a try catch statement?
问题
我试图告诉用户保持输入正确的值格式,直到格式正确为止。我想向用户显示,如果他/她输入了错误的格式(值的数量),他/她应该重试,系统将要求用户输入新的值。我如何使用下面的代码实现这一点?
并且底部的 while 语句是否有效(写得正确)?就像如果异常没有被触发,停止 "do:ing"。
注:我知道我的代码看起来很糟糕,因为我是一个纯初学者,不知道如何正确格式化代码。
public class PersonTidbok {
public static void main(String[] args){
Scanner console = new Scanner(System.in);
char choice;
System.out.print("欢迎来到您的界面,请从以下选项中选择:\n" +
"P, T, L, S, A, Q");
choice = console.next().charAt(0);
switch (choice){
case 'P':
do{
System.out.print("请输入格式为 (YYYYMMDD) 的 persnr:");
try{
String persnr = console.next();
if (persnr.length() != 8) {
throw new FormatException();
}
}
catch (FormatException exception){
System.out.println(exception + " 您输入了错误的格式,请重试。");
}
} while (true); // 此处应为循环条件
// 其他选项的处理...
}
}
}
P.S. 请注意,我已经重新格式化了您的代码,并做了一些修改以使其正确运行。在你的代码中,有一些小错误,我已经帮你进行了修正。
英文:
Im trying to tell the user to keep inputing the right value format until its done properly. I want to display to the user that if he/she has typed in the wrong format (number of values), he/she should try again and the system will ask the user to input new values. How do I do that with the following code below?
And is the while statement at the bottom valid (properly written)? Like if the exception isnt triggered, stop "do:ing"
P.S, I know that my code below looks awful, as I'm a mere beginner and do not know how to format code properly
public class PersonTidbok {
public static void main(String[] args){
Scanner console = new Scanner (System.in);
System.out.print ("Welcome to your interface, please select of the following: " +
"\nP, T, L, S, A, Q");
choice = console.next().charAt(0);
switch (choice){
case P:
do{
System.out.print (" enter persnr in the format of (YYYYMMDD));
try{
persnr = console.nextInt();
if ( persnr.length != 8);
throw new FormatException();
}
catch (FormatException exception){
System.out.println(exception + "You printed wrong format, try again"));
}
}
while (!FormatException);
}
}
答案1
得分: 1
import java.util.Scanner;
public class PersonTidbok {
public static void main(String[] argv) {
Scanner console = new Scanner(System.in);
boolean valid;
char choice = '\0';
String persnr;
do {
valid = true;
System.out.print("欢迎访问您的界面,请选择以下操作之一(P,T,L,S,A,Q):");
String input = console.nextLine();
if (input.length() != 1) {
System.out.println("无效输入,请重试。");
valid = false;
}
choice = input.charAt(0);
} while (!valid);
switch (choice) {
case 'P':
do {
valid = true;
System.out.print("请输入格式为(YYYYMMDD)的身份证号码:");
try {
persnr = console.nextLine();
if (!persnr.matches("[1-9]{1}[0-9]{7}")) {
throw new IllegalArgumentException("您输入的格式有误,请重试。");
}
System.out.println("正在处理...");
// ...身份证号码处理应在此处进行
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
valid = false;
}
} while (!valid);
break;
default:
System.out.println("选择的值错误。");
}
}
}
示例运行:
欢迎访问您的界面,请选择以下操作之一(P,T,L,S,A,Q):a
选择的值错误。
另一个示例运行:
欢迎访问您的界面,请选择以下操作之一(P,T,L,S,A,Q):PT
无效输入,请重试。
欢迎访问您的界面,请选择以下操作之一(P,T,L,S,A,Q):P
请输入格式为(YYYYMMDD)的身份证号码:01234567
您输入的格式有误,请重试。
请输入格式为(YYYYMMDD)的身份证号码:ancdefgh
您输入的格式有误,请重试。
请输入格式为(YYYYMMDD)的身份证号码:20180912
正在处理...
英文:
Do it as follows:
import java.util.Scanner;
public class PersonTidbok {
public static void main(String[] argv) {
Scanner console = new Scanner(System.in);
boolean valid;
char choice = '\0';
String persnr;
do {
valid = true;
System.out.print("Welcome to your interface, please select of the following (P, T, L, S, A, Q): ");
String input = console.nextLine();
if (input.length() != 1) {
System.out.println("Invalid input. Try again.");
valid = false;
}
choice = input.charAt(0);
} while (!valid);
switch (choice) {
case 'P':
do {
valid = true;
System.out.print("Enter persnr in the format of (YYYYMMDD): ");
try {
persnr = console.nextLine();
if (!persnr.matches("[1-9]{1}[0-9]{7}")) {
throw new IllegalArgumentException("You printed wrong format, try again");
}
System.out.println("Processsing...");
// ...Processing of persnr should go here
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
valid = false;
}
} while (!valid);
break;
default:
System.out.println("Wrong value for choice.");
}
}
}
A sample run:
Welcome to your interface, please select of the following (P, T, L, S, A, Q): a
Wrong value for choice.
Another sample run:
Welcome to your interface, please select of the following (P, T, L, S, A, Q): PT
Invalid input. Try again.
Welcome to your interface, please select of the following (P, T, L, S, A, Q): P
Enter persnr in the format of (YYYYMMDD): 01234567
You printed wrong format, try again
Enter persnr in the format of (YYYYMMDD): ancdefgh
You printed wrong format, try again
Enter persnr in the format of (YYYYMMDD): 20180912
Processsing...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论