我有一个随机访问文件,保存这种格式的记录 "00, , "
- 我想要做的是从随机访问文件中读取并检查是否有条目在特定位置(如下面的代码所示)。读取记录很好,但是当它读取带有 substr(0, 1)
的记录时,它仍然会输出 文本字段 GUIS,它通常会保存我需要的值(日期、时间、和客户名称)
。我尝试将 substr
更改为 values[0]
,这是一个分割变量的数组,其中保存了他们搜索的特定position
的值为了。 s - 这是保存该行的变量
我的 Java 文件 - fileWriter.txt randomAccess 文件
public class readRandomDataFile extends JFrame implements ActionListener{
private static Path file = Paths.get("fileWriter.txt");
private static String s = "00, , "
+ System.getProperty("line.separator");
private static FileChannel fc = null;
private static int RECSIZE = s.length();
private static JButton submit;
private static JLabel output;
private static JLabel bankDetails;
// private static JTextField txtClient = new JTextField("", 20);
private static JTextField txtDate = new JTextField("",6);
private static JTextField txtClient = new JTextField("",15);
private static JTextField txtHour = new JTextField("",6);
// private static JTextField txtHour = new JTextField("",6);
private static JLabel lblClient = new JLabel("Client");
private static JLabel lblDate = new JLabel("Date");
private static JLabel lblHour = new JLabel("Hour");
private static JLabel noResult = new JLabel("");
private static JLabel lblHeading1 = new JLabel("<html><h1>Meeting Calendar</h1></html>");
private static JLabel lblHeading2 = new JLabel("<html><h2>Enter this months appointment</h2></html>");
private int date;
public readRandomDataFile(){
super("Read Date File");
setSize(300,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
output = new JLabel();
submit = new JButton("Submit");
bankDetails = new JLabel();
setLayout(new FlowLayout());
add(lblHeading1);
add(lblHeading2);
// add(lblDate);
// add(txtDate);
// txtClient.addActionListener(this);
add(lblDate);
add(txtDate);
txtDate.addActionListener(this);
// add(lblHour);
// add(txtHour);
// txtHour.addActionListener(this);
add(submit);
submit.addActionListener(this);
add(output);
}
public void actionPerformed(ActionEvent e){
date = Integer.parseInt(txtDate.getText());
Object source = e.getSource();
String strID = "";
if(source == submit){
byte[] data = s.getBytes();
ByteBuffer buffer = ByteBuffer.wrap(data);
try{
fc = (FileChannel)Files.newByteChannel(file, READ, WRITE);
strID = txtDate.getText();
buffer = ByteBuffer.wrap(data);
fc.position(date * RECSIZE);
fc.read(buffer);
s = new String(data);
String[] values = s.split(",", -1);
if(s.substring(0,1).equals(00)){
noResult.setText("No Results Found");
}
else{
output.setText(values[0]);
output.setVisible(false);
add(lblClient);
add(txtClient);
add(lblHour);
add(txtHour);
txtClient.setText(values[1]);
txtHour.setText(values[2]);
//output.setText("Info for ");
}
fc.close();
}
catch(IOException er){
System.out.println("Error connecting to or reading to file");
}
}
}
public static void main(String[] args){
readRandomDataFile one = new readRandomDataFile();
one.setVisible(true);
// int id;
// String strID = "";
// double fee;
}
}
最佳答案
解决这个问题的方法只是简单地改变
if (s.substring(0,1).equals("00")) {
noResult.setText("No Results Found");
}
TO - 我将 substr(0,1) 更改为 (0,2)
if (s.substring(0,2).equals("00")) {
noResult.setText("No Results Found");
}
还将 noResult 的 GUI 添加到 JFRAME add(noResult)
关于Java if 语句不会运行 - 测试 substr(0,1) 是否 == 00,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29980867/