请帮我看看这个代码还能再精简吗?

SilentHunter460 2020-02-15 11:46:29


import java.io.*;
import java.util.Random;
import java.util.Scanner;

public class Exercise_12_15 {
//实例化File类的的对象,类的文件名是Exercise12_15.txt。
private static File thefile = new File("j:/Exercise12_15.txt");

public static void main(String[] args) throws IOException {
myPrint();
}

private static void myScanner() throws FileNotFoundException {
//扫描Exercise12_15.txt文件。把文件每一行打印到控制台。
try (Scanner readfromtxt = new Scanner(thefile)) {
while (readfromtxt.hasNextLine()) {
System.out.println(readfromtxt.nextLine());
}
}
}

private static void myPrint() throws FileNotFoundException {
//调用myScanner方法,如果没有找到Exercise12_15.txt,则捕获这个异常。
try {
myScanner();
System.out.println(thefile.getName() + "文件已存在。");
} catch (FileNotFoundException ex) { // 没有文件的异常被捕获。
Random myrnd = new Random(); // 实例化Random类的对象。
int[] rndInt = new int[15]; // 声明数组。
for (int i = 0; i < rndInt.length - 1; i++) { // 数组元素赋值。
rndInt[i] = myrnd.nextInt(100);
}
//创建Exercise12_15.txt文件,把数组内容写进去。
try (PrintWriter writetotxt = new PrintWriter(thefile)) {
for (int i = 0; i < rndInt.length - 1; i++) {
writetotxt.println(rndInt[i]);
}
}
myScanner();
}
}

}

...全文
156 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2020-02-18
  • 打赏
  • 举报
回复
我发现一个问题,你的程序都把FileNotFoundException异常给抛弃了,万一File没有你处理异常没效啊!
zspmsir 2020-02-17
  • 打赏
  • 举报
回复
精简代码最好是按功能来进行精简,这样后期开发可以直接引用
qybao 2020-02-16
  • 打赏
  • 举报
回复
首先文件存在不存在,File类就有api,没必要用异常。 其次,现在的例子的文件结构简单,加入文件路径有多层文件夹,而且这些文件夹也不存在,那么例子中的创建文件的代码根本就不行。 再次,题目只要求随机生成15个随机数写文件,所以直接生成一个就写入一次文件就好,没必要先保存到数组里。 另外,尽量不要用static方法,除非是工具类或者只是单纯地写个简单的sample,要学会用面向对象的思想来考虑问题。
再启动 2020-02-16
  • 打赏
  • 举报
回复
引用 3 楼 qq_16774199 的回复:
[quote=引用 2 楼 qybao 的回复:] 另外,尽量不要用static方法,除非是工具类或者只是单纯地写个简单的sample,要学会用面向对象的思想来考虑问题。
你好。这句不理解,用static只需要实例化File对象一次,然后这个类里任何方法随便用,不然100个方法实例化File对象100次?[/quote] 创建实例并不会有多少开销,通常情况下这都不是性能优化的点。 即使你把File对象作为static,只是少创建一个对象,每次新打开一个文件的开销并不会减少。 静态变量在类加载的时候会被加载到JVM的方法区,基本上加载后就一直占用这部分空间。 如果作为一个变量,每次使用后系统就会自动做垃圾回收了,不会浪费内存。
qybao 2020-02-16
  • 打赏
  • 举报
回复
现在不理解,以后再慢慢理解吧。面向对象不是说加了个class,什么都用static来写代码就完事了,这和面向过程有什么分别?就好像你说的,要生成100次,但如果要求每次的文件名不一样呢?你要写100个class?还是1个class生成100个对象方便?
SilentHunter460 2020-02-16
  • 打赏
  • 举报
回复
引用 2 楼 qybao 的回复:
另外,尽量不要用static方法,除非是工具类或者只是单纯地写个简单的sample,要学会用面向对象的思想来考虑问题。
你好。这句不理解,用static只需要实例化File对象一次,然后这个类里任何方法随便用,不然100个方法实例化File对象100次?
SilentHunter460 2020-02-15
  • 打赏
  • 举报
回复
题目要求: 编写一个程序,如果名为Exercise12_15.txt文件不存在,则创建它。使用文本I/O将随机产生的15个整数写入文件。从文件中读回数据。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧