怎么优化这串代码Scanner sc1 = new Scanner(System.in); System.out.println("请输入您要查找的序号:"); String num = sc1.nextLine(); judgeSearch jud = new judgeSearch(); try(FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr)){ if(1 == jud.judge(num)){ while (true) { String line = br.readLine(); String[] str = line.split(" ");//分割 if (str[0].equals(num)) { System.out.println(line); break; } } } if(0 == jud.judge(num)){ System.out.println("没有该商品!"); break; }
时间: 2024-02-10 08:06:18 浏览: 61
根据这段代码,我给出以下几点优化建议:
1. 对于输入的序号进行校验,避免用户输入非法数据。比如可以使用正则表达式判断输入是否为数字等有效格式。
2. 考虑到文件较大时,读取文件的效率较低,在读取文件数据时考虑使用缓存来提高读取效率。可以使用 BufferedInputStream 来进行缓存读取文件数据。
3. 可以使用 try-with-resources 语句来自动关闭资源,避免忘记手动关闭资源导致资源泄漏。
4. 可以将读取文件数据的代码封装成一个方法,提高代码的复用性和可读性。
下面是对原代码进行上述优化后的示例代码:
```java
try (Scanner sc1 = new Scanner(System.in);
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedReader br = new BufferedReader(new InputStreamReader(bis))) {
System.out.println("请输入您要查找的序号:");
String num = sc1.nextLine();
if (!num.matches("\\d+")) {
System.out.println("输入的序号格式不正确!");
return;
}
if (judgeSearch.judge(num) != 1) {
System.out.println("没有该商品!");
return;
}
String line;
while ((line = br.readLine()) != null) {
String[] str = line.split(" ");
if (str[0].equals(num)) {
System.out.println(line);
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
```
需要注意的是,以上代码仅供参考,具体优化方式还需根据实际情况进行调整。
阅读全文