当前位置: 首页 > 知识库问答 >
问题:

Java数字格式异常时使用nteger.parse

周意智
2023-03-14

在来这里之前,我真的在互联网上搜索了答案,我认为答案将与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");

           }

共有2个答案

魏彦
2023-03-14

简短回答: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
}
彭建业
2023-03-14

在尝试转换之前,可以检查输入的数字是否有效。例如:

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

  • 问题内容: 我想知道是否有可能在Java中使用String.format方法给出一个在零之前的整数? 例如: 1将变为001 2将变为002 … 11将变为011 12将变为012 … 526将保留为526 … 目前,我尝试了以下代码: 不幸的是,它在数字之前带有3个空格。可以在数字前加零吗? 问题答案: 使用格式说明为整数。的装置,该数目将是零填充,如果它是少于三个(在这种情况下)位。 有关其他