在来这里之前,我真的在互联网上搜索了答案,我认为答案将与try/get语句有关,但即使在看了几个关于这个主题的教程后,我也不确定如何实现它。
不管怎样,我正在尝试在我正在制作的新手提醒应用程序中做一件简单的事情(现在我学习Java作为我的第一语言已经有3个月了)。
我想让程序检查用户的输入,如果它是一个特定的字母(“R”),我想让程序做一些特定的事情。如果它是从0到100的整数,那么我想做其他的事情。如果它们都不是,那么我希望“其他”语句起作用。
当我得到数字格式异常错误时,我无法让“其他”语句工作的问题。例如,如果我输入其他字母,即“d”——我会得到这条错误消息:
线程“main”java中出现异常。lang.NumberFormatException:对于输入字符串,java中的“d”。lang.NumberFormatException。java上的forInputString(NumberFormatException.java:65)。整型。java上的parseInt(Integer.java:580)。整型。mash上的parseInt(Integer.java:615)。对话mash的startDialogue(Dialogue.java:51)。对话newRem(Dialogue.java:27)在mash。对话mash的startDialogue(Dialogue.java:38)。对话从mash开始(Dialogue.java:13)。主要的main(main.java:9)
这是代码(对于任何可读性问题,我很抱歉,这是我第一次向别人展示我的代码)。你不必阅读其他的if语句,因为这个问题似乎不依赖于该语句中的文本。
如果有人能告诉我代码有什么问题,以及我将如何达到我的目的,我将不胜感激。一些新来者友好的解决方案将不胜感激。
提前谢谢!
String secondLetter = mash.nextLine();
if(secondLetter.equals("r") || secondLetter.equals("R")) { //if the user enters R - create a new Reminder
newRem();
}
else if((Integer.parseInt(secondLetter) >= 0) && (Integer.parseInt(secondLetter) < maximum)) { //if the user enters number - check task list
tasks.remText(Integer.parseInt(secondLetter));
System.out.println("Enter 'D' to set the reminder as Done. Or enter 'T' to return to the list");
String v = mash.nextLine();
System.out.println(v);
if(v.equals("d")|| v.equals("D")) { //if user enters D - set the reminder as done
tasks.setDone(Integer.parseInt(secondLetter));
System.out.println("The reminder is now added to 'Done' list");
}
else if(v.equals("t")|| v.equals("T")) { //if user enters T - return to the list of reminders
tasks.display();
}
else {
System.out.println("Please enter the correct symbol");
}
}
else {
System.out.println("Enter the correct symbol");
}
简短回答:docs。神谕
完整答案:可以使用整数。parsInt(字符串s)仅适用于可解析为整数的字符串。字母“R”不能是数字,因此它会生成一个异常。
if(Character.isLetter(secondLetter) && "R".equalsIgnoreCase(secondLetter)){
do code with "R"
}else if(Integer.parseInt(secondLetter) > 0 && Integer.parseInt(secondLetter) < 100){
do code with 0 < number < 100
}else{
do something else
}
在尝试转换之前,可以检查输入的数字是否有效。例如:
if(!secondLetter.matches("[0-9]+")) {
//it's not a number, so dont attempt to parse it to an int
}
将其放入if/else中,如下所示:
if(secondLetter.equals("r") || secondLetter.equals("R")) {
newRem();
} else if(!secondLetter.matches("[0-9]+")){
System.out.println("please type r or R or a number");
} else if((Integer.parseInt(secondLetter) >= 0) && ...
我有数字形式的感觉,但我不知道为什么? XML文档http://www.nbp.pl/kursy/xml/c073z070413.xml 异常线程"main"java.lang.NumberFormatExcture:对于输入字符串:"dolar amerykaski"在java.lang.NumberFormatException.forInputString(NumberFormatExcep
我正试图通过使用以下方法来取消加密字符串,但遇到了异常。 我试图将我的加密字符串发送到下面的方法,但它不能得到Byte[],在将字符串转换为Byte[]时得到数字格式异常。 请建议。
问题内容: 在我日常的Web应用程序开发中,有许多情况需要我们从用户那里获取一些输入。 然后将这个数字输入传递给可能是应用程序的服务层或DAO层。 由于它是一个数字(整数或浮点数),在某个阶段,我们需要将其转换为整数,如以下代码片段所示。 在上述情况下,在这里,我必须检查输入是否不为null或是否没有输入(空白),或者有时是否有非数字输入的可能性,例如blah,test等。 处理此类情况的最佳方法
我有一张这样的地图 我可以得到分数作为整数以及"NA",所以我映射类型为字符串,但在发布数据到索引我得到数字格式异常。 例如: 如果我将第一个数据发布为整数,后跟“NA”。我得到了这些例外。 检查日志文件时,我发现以下错误: [2016-08-29 15:19:01]elasticlog.警告:响应[{\"错误\":{\"root_cause类型\":\"mapper_parsing_except
我正在转换
我的代码过早地抛出了预期错误。我试图测试输入验证,但在验证发生之前我抛出了一个错误。当我尝试将代码恢复到以前的版本时,它会抛出与我现在处理的问题之前相同的错误。 输入的示例 下面的代码是第137行——明显的罪犯 这是一个例外。