Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在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 - Fatal编程技术网

在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类型的异常:

  • 第一个参数为null或长度为零的字符串。
  • 基数小于java.lang.Character.MIN_基数或大于java.lang.Character.MAX_基数
  • 字符串的任何字符都不是指定基数的数字,除非第一个字符可以是减号“-”('\u002D'),前提是字符串长度大于1
  • 字符串表示的值不是int类型的值

  • 文件格式错误(某些值丢失)或索引错误(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);
    }