我的代码是读取文件并检查文件中的输入名称匹配数据。如果匹配则打印
我使用方法子字符串来检查它们是否匹配。我知道错误会出现在文件的第 1 行,因为第 1 行只有 4 个字符,所以 4<12 然后会出错。
那么如何跳过该错误并且程序仍然继续运行?我的意思是假设 4 小于 12 然后忽略,然后读取下一行直到读取所有行,如果匹配将打印它并程序结束。
谢谢你,对不起我的英语不好
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.logging.Level;
import java.util.logging.Logger;
String ss,sss;File file =new File("cauthu.dat");
ss=JOptionPane.showInputDialog(null, "input name");
FileReader fr;
try {
fr = new FileReader(file);
BufferedReader br=new BufferedReader(fr);
try {
while((sss=br.readLine())!=null)
{sss.substring(12);int l=sss.length();System.out.println(l);}
} catch (IOException ex) {
Logger.getLogger(Form7.class.getName()).log(Level.SEVERE, null, ex);
}
`
} catch (FileNotFoundException ex) {
Logger.getLogger(Form7.class.getName()).log(Level.SEVERE, null, ex);
}
这是文件中的数据:
Id:1
name:hello
Nam sinh:2000
Vi tri:thu mon
--------------------------
Id:2
name:hi
Nam sinh:2000
Vi tri:tien dao
--------------------------
Id:3
name:hello hi
Nam sinh:2000
Vi tri:tien dao
--------------------------
这是错误:
Exception in thread "AWT-EventQueue-1" java.lang.StringIndexOutOfBoundsException: String index out of range: -8
at java.lang.String.substring(String.java:1931)
at bai7.Form7.findActionPerformed(Form7.java:195)
at bai7.Form7.access$100(Form7.java:23)
at bai7.Form7$2.actionPerformed(Form7.java:73)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at org.GNOME.Accessibility.AtkWrapper$6.dispatchEvent(AtkWrapper.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)