temp1 =Integer.parseInt(String.valueOf(cardId.charAt(len)));这句为什么不能运行,错误是未知数据愿?

问题描述

importjava.util.*;publicclassStringPractise{publicstaticStringstr(){Scannerinput=newScanner(System.in);System.out.println("请输入数字串:");StringnumStr=input.next();returnnumStr;}//身份证验证publicstaticStringidentityCardId(){inttemp1=0;StringcardId=str();chartemp;intlen=cardId.length();if(len!=18)return"您输入的位数错误";else{for(inti=0;i<len-1;i++){temp=cardId.charAt(i);if(temp<48||temp>58)return"身份证第"+(i+1)+"中不能含有字符";}}temp1=Integer.parseInt(String.valueOf(cardId.charAt(len)));if(temp1!=120&&temp1!=88&&temp1<0&&temp1>9)return"身份证号码中不能含有除了最后一位是X的其它字符";elsereturn"身份证号码正确:"+cardId;}publicstaticvoidmain(String[]args){System.out.println(identityCardId());}}

解决方案

解决方案二:
System.out.println(String.valueOf(cardId.charAt(len)));先
解决方案三:
请按红色字部分修改if(len!=18)return"您输入的位数错误";else{for(inti=0;i<len-2;i++){temp=cardId.charAt(i);if(temp<48||temp>58)return"身份证第"+(i+1)+"中不能含有非数字字符";}}temp1=cardId.charAt(len-1);if(temp1!=120&&temp1!=88&&temp1>58||temp1<48)return"身份证号码中最后一位不能含有除X外的其它字符";elsereturn"身份证号码正确:"+cardId;
解决方案四:
订正for(inti=0;i<len-2;i++){应该是for(inti=0;i<len-1;i++){
解决方案五:
cardId.charAt(len)这句是无数据的, 最后一个字符应该是 cardId.charAt(len-1)
解决方案六:
啥东东看半天没看明白

时间: 2024-08-01 03:09:44

temp1 =Integer.parseInt(String.valueOf(cardId.charAt(len)));这句为什么不能运行,错误是未知数据愿?的相关文章

Integer.parseInt(String s)一个奇怪的问题

问题描述 最近做项目遇到一个很奇怪的问题,一路debug下去到现在都还没找到原因.因此发到CSDN寻求各位大牛们的专业解答!publicclassTest{publicstaticvoidmain(String[]args){Strings="٢٠١٤٠٦";System.out.println(Integer.parseInt(s));}}本来预期输出是抛异常但是发现运行结果却是运行环境是jdk1.6百思不得其解然后就debug踪下代码发现最终会调用到java.lang.Charac

Integer.parseInt(String s ,int radix)方法使用解释

方法parseInt(String s,int radix)的目的是输出一个十进制数,这个数字是"String s"但是我们要知道他是多少进制的,而方法中"int radix"参数正是来表达这个信息的.  比如:parseInt(1010,2) 意思就是:输出2进制数1010在十进制下的数. 更直白地说:parseInt(String s,int radix)就是求"int radix"进制数"String s"的十进制数是多

String.valueOf() 方法的使用

1. 由 基本数据型态转换成 String String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 也就是 String.valueOf() 这个参数多载的方法 有下列几种 String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串 String.valueOf(char c) : 将 char 变量 c 转换成字符串 String.valueOf(char[] data) : 将 char 数组 data 转换成字符串

Integer.parseInt(&amp;quot;&amp;quot;) Integer.valueOf(&amp;quot;&amp;quot;)和new Integer(&amp;quot;&amp;quot;)之间的区别

把一个String转换成int有Integer.parseInt(""). Integer.valueOf("")和new Integer("")这么几种方式,它们之间有什么区别呢?我们可以分别看一下它们的源码 //Integer.parseInt("") public static int parseInt(String s) throws NumberFormatException { return parseInt(s,

Integer.valueof() Integer.parseInt()

可以认为就是返回值类型不同. static int parseInt(String s)           将字符串参数作为有符号的十进制整数进行分析. static Integer valueOf(int i)           返回一个表示指定的 int 值的 Integer 实例. static Integer valueOf(String s)           返回保持指定的 String 的值的 Integer 对象. 当你调用参数为int的方法时test(Integer.pa

求助关于Integer.parseInt出错的一点问题

问题描述 初学者,求大神解答!!非常非常感谢!我在java项目里使用了:Num=Integer.parseInt(sum);报错信息为:java.lang.NumberFormatException:Forinputstring:"315"我大概了解了一下,这个错误通常是因为括号内的字符串不能格式化转为整形或者越界,但是我的字符串内容就是"315",前后也没有乱七八糟的字符,没有空格等,数字315也不存在越界问题.非常费解是什么情况,谢谢! 解决方案 解决方案二:

java-Java字符串数字转化为double类型不用Integer.parseInt

问题描述 Java字符串数字转化为double类型不用Integer.parseInt 当用了split()方法分离字符串的整数部分和小数部分后,两部分都存在了两个字符数组里,我怎么才能把每一个字符数组的每一位读出来进行转化呢 解决方案 double d = 0.0; String[] s = "123.456".split("."); for (int i = 0; i < s[0].length; i++) { d *= 10; d +=s.toCharA

浅谈String.valueOf()方法的使用_基础知识

前面的话 关于类型转换,对象常见的两个方法是toString()和valueOf().实际上,这两个方法也可以应用在包装类型上.前面已经介绍过toString()方法,本文将介绍valueOf()方法,该方法返回原值 [1]undefined和null没有valueOf()方法 undefined.valueOf();//错误 null.valueOf();//错误 [2]布尔型数据true和false返回原值 true.valueOf();//true typeof true.valueOf(

DataRow indexing performance (integer vs. string)

SOURCE:  http://www.codeproject.com/KB/database/datarow_indexing.aspx Article: Introduction   Background When I was developing an application for Pocket PC that used quite large DataSet, I wondered where I could gain at least some bits of performance