从文件中读取代码然后将其放入构造函数中的代码将不起作用

我是一名大学生,我在java中有一个项目,我试图从文件中读取并将它们放入构造函数中。 我试图读取的文件是这种形式:

2 Sciense [mr ali hassan  14/4/1993 ] Ali  Hhassan 13234 12/3/1998 123 1234567891234 1234567891 engineer
2 Sciense [mr ali hassan  14/4/1993 ] Ali  Hhassan 13234 12/3/1998 123 1234567891234 1234567891 null
.
.
.
etc 

我试图从标记中读取标记中的标记,并将它们放在我的构造函数中。 这是我的代码:

我知道我在编写我的类时有很多流量,那是因为我在4个月前才开始学习java编程,但是我想要做的是读取文件的第一行并将其中的每个标记分开试图增强我的代码锁定像这样,File F = new File(“Book.txt”);

       Scanner fileInput = new Scanner (F);
       while (fileInput.hasNextLine()){
       String Line = fileInput.nextLine();      
       Scanner readLline = new Scanner(Line);    

       while(readLline.hasNext()){
       //reads line by line
       readBook.setNumOfAuthor(readLline.nextInt());
       readBook.SetAplicationTitle(fileInput.next(Line));
       String GetRedOf = fileInput.next();    
       ba.setStatus(fileInput.next()); 
       ba.setFirstName(fileInput.next()) ;
       ba.setLastName(fileInput.next());
       Adate.setDay(fileInput.nextInt());
       String GetRedOf3 = fileInput.next();
       Adate.setMonth(fileInput.nextInt());
       String GetRedOf4 = fileInput.next();
       Adate.setYear(fileInput.nextInt() ) ;
      //  String comma = fileInput.next();
       String GetRedOf2= fileInput.next();
       bb.setName(fileInput.next()); 
       bb.setAdress(fileInput.next());
       bb.setphneNumber(fileInput.next());
       publicationDate.setDay(fileInput.nextInt())  ;
       String getred = fileInput.next();
       publicationDate.setMonth(fileInput.nextInt()); 
       String getred1 = fileInput.next();
       publicationDate.setYear(fileInput.nextInt()) ;
       readBook.SetNumOfPUblication(fileInput.nextInt()); 
       readBook.setIsbn13(fileInput.next()) ;  
       readBook.setIsbn13(fileInput.next());  
       readBook.SetCatagory(fileInput.next());            





       }

你能帮我解决他的问题吗?

这是我在线程“主”java.util.NoSuchElementException在java.util.Scanner.throwFor(Scanner.java:907)

在java.util.Scanner.next(Scanner.java:1530)

at java.util.Scanner.next(Scanner.java:1463)

at TestPublications.ReadBook(TestPublications.java:260)

at TestPublications.main(TestPublications.java:232)

Java结果:1行260是

readBook.SetAplicationTitle(fileInput.next(线));


Sciense [mr ali hassan  14/4/1993 ] Ali  Hhassan are not valid integer.

1.首先读取String

String str = readLline.next();

2.使用Integer.parseInt()方法来验证整数输入。

假设

try{
    Integer.parseInt(ste);
}
catch(NumberFormatException ex){
    System.out.println("Its not a valid Integer");
}

对于第一行:

2 Sciense [mr ali hassan  14/4/1993 ] Ali  Hhassan 13234 12/3/1998 123 1234567891234 1234567891 engineer

扫描仪工作如下:

int numofaouthers = fileInput.nextInt(); // 2
String SetAplicationTitle =fileInput.next(); // Sciense 
String GetRedOf = fileInput.next(); // [mr

String Status = fileInput.next(); // ali 

这里已经是错误的了......


InputMismatchException表示从文件读取的内容与您尝试存储的数据类型不匹配。错误位于类的第258行(在编辑器中打开行号)。 我怀疑它是你的int之一,你要么尝试读取一个字符串为int,要么你正在溢出一个int(即你正在读取的数字大于MAX_INT)。

在旁注中,您应该为变量名使用小写字母名称。 你写它的方式很难从一个Class名字中知道一个变量名。

以下是JavaDoc的例外情况:

http://docs.oracle.com/javase/7/docs/api/java/util/InputMismatchException.html

链接地址: http://www.djcxy.com/p/17215.html

上一篇: Code to read from a file and then putting it into a constructor won't work

下一篇: Scanner is skipping nextLine() after using next() or nextFoo()?