在Java中将子字符串转换为Int List myLibrary=newarraylist(312); 公共图书图书馆(扫描仪内嵌){ while(infle.hasNextLine()){ 字符串aBook=infle.nextLine(); String title=aBook.substring(0,32).trim(); String language=aMovie.substring(33,40.trim(); 字符串评级=aMovie.substring(41,50).trim(); int hardCover=Integer.parseInt(aBook.substring(51,55.trim()); int平装本=Integer.parseInt(aBook.substring(56)); myLibrary.add(新书)(标题、语言、评级、, 精装、平装); 计数++; }
这里只是一些示例代码。我试图弄清楚为什么我在尝试运行程序时会收到此运行时错误。我的程序中没有编译器错误在Java中将子字符串转换为Int List myLibrary=newarraylist(312); 公共图书图书馆(扫描仪内嵌){ while(infle.hasNextLine()){ 字符串aBook=infle.nextLine(); String title=aBook.substring(0,32).trim(); String language=aMovie.substring(33,40.trim(); 字符串评级=aMovie.substring(41,50).trim(); int hardCover=Integer.parseInt(aBook.substring(51,55.trim()); int平装本=Integer.parseInt(aBook.substring(56)); myLibrary.add(新书)(标题、语言、评级、, 精装、平装); 计数++; },java,list,arraylist,int,substring,Java,List,Arraylist,Int,Substring,这里只是一些示例代码。我试图弄清楚为什么我在尝试运行程序时会收到此运行时错误。我的程序中没有编译器错误 List<Book> myLibrary = new ArrayList <Book>(312); public BookLibrary (Scanner inFile){ while(inFile.hasNextLine()){ String aBook = inFile.nextLine(); String title = aBook.
List<Book> myLibrary = new ArrayList <Book>(312);
public BookLibrary (Scanner inFile){
while(inFile.hasNextLine()){
String aBook = inFile.nextLine();
String title = aBook.substring(0, 32).trim();
String language = aMovie.substring(33, 40).trim();
String rating = aMovie.substring(41, 50).trim();
int hardCover = Integer.parseInt(aBook.substring(51, 55).trim());
int paperBack = Integer.parseInt(aBook.substring(56));
myLibrary.add(new Book (title, language, rating,
hardCover, paperBack));
count++;
}
线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“
位于java.lang.NumberFormatException.forInputString(未知源)
位于java.lang.Integer.parseInt(未知源)
位于java.lang.Integer.parseInt(未知源)
在MovieCollection(BookLibrary.java:21)
这是运行时异常,不是编译器错误 问题发生在以下线路之一-
Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at MovieCollection.<init>(BookLibrary.java:21)
其中一个参数是空字符串“”
Integer.parseInt
方法只能处理具有有效整数的字符串。例如,“1”
,“123”
是好的,但“
无效。parseInt的一个参数是”
从Integer.parseInt的Javadoc:
如果发生以下任何情况,将引发NumberFormatException类型的异常:
文件格式错误(某些值丢失)或索引错误(substring方法的参数)请更正此方法调用以适当:
int hardCover = Integer.parseInt(aBook.substring(51, 55).trim());
int paperBack = Integer.parseInt(aBook.substring(56));
现在其中一个返回一个空字符串
如果硬纸板或硬纸板可以是空的,则使用try/catch构造:
substring(51, 55)
substring(56)
或者检查一下
int hardCover = 0;
int paperBack = 0;
try{
hardCover = Integer.parseInt(aBook.substring(51, 55).trim());
}catch(NumberFormatException nfe){}
try{
paperBack = Integer.parseInt(aBook.substring(56));
}catch(NumberFormatException nfe){}
似乎其中一个字符串是空的。在尝试将其解析为数字之前,您应该检查空字符串和空字符串。您可以调试并查看aBook包含的内容,以及51-55和56 inf是否是数字的有效字符串。如果用户已经提供了答案,则不允许删除问题的内容。
String toInt1 = aBook.substring(51, 55).trim();
if(toInt1.length > 0){
hardCover = Integer.parseInt(toInt1);
}