java - Java异常处理 -ID号机

java - Java异常处理 -ID号机,第1张

我正在改进我的Java技能,现在我正在做一些异常练习,但我仍然坚持这个练习:

  

ID号码机:询问用户的ID号码。一个正确的输入   身份证号码的长度为10,且必须全部为数字。

     

输入:123456790输出:正确

     

输入:12eer12345输出:不正确

     

输入:12345678901输出:不正确

我不知道使用什么异常来使程序工作,我知道NumberFormatException可用于检查字符串是否为数字,但总的来说我卡住了,谢谢有人可以帮助我。

我正在努力让你的工作得到你给我的帮助,在练习的页面中,他们给你一些代码的问题,你必须完成那些代码,到目前为止我用这个代码制作他们给你的代码:

import java.util.Scanner; 
class Challenge{ 

 public static void main(String args[]){ 
 Scanner scanner=new Scanner(System.in); 
 String input;
 int num; 

 System.out.println("Enter the ID number:");  
 input = scanner.next(); 
 ///{Write your code here   
 try  
  {  
    num = Integer.parseInt(input);
  }  
  catch(NumberFormatException nfe)  
  {  
    System.out.println("incorrect");
  }  

if(input.length()==10)
        System.out.println("correct");
 ///}  
} 
} 

我正在尝试运行它,当我使用数字1234567890 the输出时#34;正确",如果我使用字符串123qwerqw,则输出为"不正确"这是正确的行为。但是,当我使用1234时,程序会坚持并且不显示任何内容。

最佳答案:

2 个答案:

答案 0 :(得分:0)

如果尝试使用与预期形式不匹配的输入值,则抛出NumberFormatException异常。

要查看字符串是否实际上是一个数字,逻辑是尝试将其解析为整数。 如果它抛出数字格式异常,则无法转换。

如果您希望能够处理十进制数,则需要使用Double.ParseDouble解析为Double。

如果输入任何不完整的数字,使用Integer.ParseInt将失败。

 public boolean isValidNumber(String val) throws NumberFormatException {
    try {
         int i = Integer.ParseInt(val);
    } catch (NumberFormatException nfe) {
        //you know here that you have non numeric chars
        return false;
    }


    //To check the length...
    if (val.length > 10) {
        return false;
    }

    return true;
}

使用isValidNumber方法....

String myNumber = "123456";
String myNotNumber = "a small town with views of the sea";
if (isValidNumber(myNumber)) {
    System.out.Println(String.format("The number {0} is valid", myNumber).toString());
} else {
    System.out.Println(String.format("The number {0} is not valid", myNumber).toString());
}

这个逻辑是,如果数字确实包含任何非数字值,当我们尝试将字符串转换为int时会抛出错误。 我们捕获错误,并从方法返回false。

如果字符串确实解析为int,我们知道它都是数字(因为我们使用整数,我们知道它不是小数)。

第二个测试处理长度 - 如果值与指定的条件不匹配,则返回false。超过10个字符的任何内容都无效,因此返回false。

只有在前面的所有检查都已通过后才能达到最终的退货声明。

我不确定这会直接编译(我是从没有使用Java大约两年的内存中写的),但这是它的基本逻辑。

答案 1 :(得分:0)

以下是适用于我的问题的代码:

    import java.util.Scanner; 
    class Challenge{ 

     public static void main(String args[]){ 
     Scanner scanner=new Scanner(System.in); 
     String input;
     int num; 

     System.out.println("Enter the ID number:");  
     input = scanner.next(); 
     ///{Write your code here   
     try  
      {  
        num = Integer.parseInt(input);            
        System.out.println(input.length()==10?"correct":"incorrect");
      }  
      catch(NumberFormatException nfe)  
      {  
        System.out.println("incorrect");
      }         
     ///}  
    }
} 
本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复