我目前正在学习UdemyJava课程,并正在练习我迄今为止学到的东西。
我有以下简单的程序,我计划使用它来让用户输入他的名字。
import java.util.Scanner;
public class Adventure {
public static final int menuStars = 65;
private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
String firstName = "";
String lastName = "";
boolean validName = false;
while(!validName){
//Entering first name
System.out.println("Please enter your first name.");
try {
firstName = input.nextLine();
if(firstName.length() == 0){
throw new Exception("Please enter a first name of at least 1 character.");
}else{
//Entering last name
System.out.println("Please enter your last name.");
lastName = input.nextLine();
if(lastName.length() == 0){
throw new Exception("Please enter a last name of at least 1 character");
}else{
System.out.println("You have entered " + firstName +" " + lastName);
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
continue;
}
//Used to terminate loop when both first & last names are valid
validName = true;
}
}
}
我想让程序在用户输入空白名称时重复错误消息,而不是从头开始重新启动整个程序。
例如,当用户输入一个空白的名字时,我希望程序继续重复“请输入至少1个字符的名字”,当用户输入一个空白的姓氏时,程序继续重复“请输入至少1个字符的姓氏”,直到用户输入一个有效的名字。
然而,当前当用户输入一个空白的名字或姓氏时,我的程序将从一开始就重复自己,而不仅仅是重复错误消息。
我如何让程序重复错误消息?
空白实际上被视为字符,因此(长度==0)的检查不适用于您的目的。
虽然下面的代码是不完整的(例如:处理firstname="foo"的潜在不良情况,(见函数。包含())),它做了原始帖子要求的事情——当用户输入一个空白的名字/姓氏时,它会不断重复“请输入至少1个字符的名字/姓氏”,直到用户输入一个有效的名字/姓氏。
import java.util.Scanner;
public class Adventure {
public static final int menuStars = 65;
private static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
String firstName = "";
String lastName = "";
boolean firstNameLegal = false;
boolean lastNameLegal = false;
// Entering first name
while (!firstNameLegal) {
System.out.println("Please enter your first name.");
firstName = input.nextLine();
if (!firstName.equals(" "))
firstNameLegal = true;
else
System.out.println("Please enter a first name of at least 1 character.");
}
// Entering last name
while(!lastNameLegal){
System.out.println("Please enter your last name.");
lastName = input.nextLine();
if(!lastName.equals(" "))
lastNameLegal = true;
else
System.out.println("Please enter a last name of at least 1 character.");
}
System.out.println("You have entered " + firstName +" " + lastName);
}
}
我还没有测试过它,但我猜它可能是这样的,如果没有try/catch,它对我来说就像你在代码中使用它一样毫无意义
String firstName = "";
String lastName = "";
System.out.println("Please enter your first name.");
firstName = input.nextLine();
while(firstName.length<1){
System.out.println("Please enter a first name of at least 1 character.");
firstName = input.nextLine();
}
lastName=input.nextLine();
while(firstName.length<1){
System.out.println("Please enter a last name of at least 1 character.");
lastName = input.nextLine();
}
System.out.println("You have entered " + firstName +" " + lastName);
编辑,一些关于异常的基本信息try cat用于意外情况发生时,您试图找到绕过它的方法。例如,如果在某个时候预期一个10个位置的数组,并且正在使用一个较小的数组(假设是4个位置)。那么这将导致异常,导致程序在没有进一步信息的情况下终止。
使用try-catch,您可以检查问题所在,并尝试通知用户做某事(如果可以的话)或使用系统以更好的方式关闭程序。例如exit(),并保存在此之前完成的所有工作
另一个例子是,如果您要求2个数字进行加法。如果用户输入字母而不是数字,则intsum=numbA numbB;
将抛出并异常。这当然可以使用if来处理。但更好的是这样的东西
当“请输入您的名字”时,使用存储true的布尔变量已打印。每次打印此字符串之前,请检查此变量是否为false。此外,在循环之前将其初始化为false。姓氏也是这样。
if(!printed)
{
System.out.println("Please enter your first name.");
printed=true;
}
while循环开始之前的语句没有打印,并且从1开始没有打印循环中的值。相反,它从一个随机的大int开始打印。
在js中,当在forEach函数中遍历arrayitems时,我遇到了一个问题。我只是有一个ID数组,其中一些ID不到10个字符,我想在开头用“0”填充这些字符。示例:在这种情况下,我想用填充最后一项。当然,它也可以在各种其他方式,但我只是不明白为什么它不起作用。 下面是我的代码:
我在循环中输入name和num时出错,
你好,我试图跳过一些错误消息并通过将空csv写入我的工作d目录来继续循环。 问题是没有is。我知道的错误()?我不知道如何实现try()包装器来获得所需的结果。
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 为什么此代码给出“无法访问的语句”错误? 这个问题似乎很简单,我在一本书中发现了这个问题。如果有人帮助我弄清楚为什么我出错了。 我认为,根据我的看法,输出应该 在dooutside内部* 。但是,它显示了 编译器错误:Unreachable Statement 。然后,我试图找出原因,它显示了 **编译错误:Unreachabl
我目前有两个循环,一个获取时间戳,另一个while循环根据时间戳查找映射信息并以某种方式输出。 我的问题是我目前正在循环浏览一个文本,并希望它在第二个循环的isdo="N"时再次从头开始读取文件,但是,情况似乎并非如此。 迄今为止的代码: