从文本文件中读取数据并使用Java进行验证

从文本文件中读取数据并使用Java进行验证,java,user-interface,Java,User Interface,我在验证文本文件中的数据时遇到问题。我只能验证我的ID号,只有其他字段不起作用 下面是我的Java代码: public void readBorrowerData() { String fnm="", snm="", pcd=""; int num=0, id=1; try { Scanner scnr = new Scanner(new File("borrowers.txt")); scnr.useDelimiter("\\s*#\\s*"); if(id < 0 ||

我在验证文本文件中的数据时遇到问题。我只能验证我的ID号,只有其他字段不起作用

下面是我的Java代码:

public void readBorrowerData() {
String fnm="", snm="", pcd="";
int num=0, id=1;
try { 
  Scanner scnr = new Scanner(new File("borrowers.txt"));
  scnr.useDelimiter("\\s*#\\s*");
  if(id < 0 || snm == null || fnm == null || num < 0){
      JOptionPane.showMessageDialog(this, "Try again", "Error", JOptionPane.ERROR_MESSAGE);
  } else {
      while (scnr.hasNextInt()) {
          id  = scnr.nextInt();
          snm = scnr.next();
          fnm = scnr.next();
          num = scnr.nextInt();
          pcd = scnr.next();
          borrowers.put(new Integer(id), new Borrower(id, snm, fnm, num, pcd));
      }
  }
  scnr.close();
} catch (NoSuchElementException e) {
  System.out.printf("%d %s %s %d %s\n", id, snm, fnm, num, pcd);
  JOptionPane.showMessageDialog(this, e.getMessage(),
      "fetch of next token failed ", JOptionPane.ERROR_MESSAGE);
public void readbrowerdata(){
字符串fnm=“”,snm=“”,pcd=“”;
int num=0,id=1;
试试{
Scanner scnr=新扫描仪(新文件(“借款人.txt”);
scnr.useDelimiter(“\\s*#\\s*”);
如果(id<0 | | snm==null | | fnm==null | | num<0){
showMessageDialog(这是“重试”、“错误”、JOptionPane.Error\u消息);
}否则{
while(scnr.hasnetint()){
id=scnr.nextInt();
snm=snr.next();
fnm=序列号next();
num=scnr.nextInt();
pcd=序列号next();
借款人。put(新整数(id)、新借款人(id、snm、fnm、num、pcd));
}
}
scnr.close();
}捕获(无接触元素例外e){
System.out.printf(“%d%s%s%d%s\n”,id,snm,fnm,num,pcd);
JOptionPane.showMessageDialog(这个,例如getMessage(),
“获取下一个令牌失败”,JOptionPane。错误消息);

不要将
scnr.nextInt()
scnr.next()
混用。使用
I'd=Integer.parseInt(scnr.next());
相反。如果不是这样,很抱歉

请显示您的文本文件的内容also@johny这是它显示的内容:001#琼斯#杰克#41#NX4 4XZ#我的意思是使用
id=Integer.parseInt(scnr.next())
手机上的自动更正有时真的很烦人:)它似乎无法验证其他字段,例如名字和姓氏..将
while(scnr.hasnetint())
更改为
while(scnr.hasNext())
我也尝试过,但程序现在没有读取借款人数据。我想我无法更改while循环中的scnr.hasNext()