赞
踩
为了实现数据的可保存性,通常会存储在硬盘中,所以我们需要一个文件为载体。
具体步骤如下:
public static void filladd() { String fileName = "goodsInfo"; String regex = "^\\d+,\\d+\\.\\d{2},[a-zA-Z]+$\n"; Scanner in =new Scanner(System.in); System.out.println("请以以下格式输入:序号,价格,名称(以,为分隔)"); String goodInfo = in.nextLine(); while (!goodInfo.matches(regex)) { System.out.println("格式错误!"); System.out.println("序号,价格,名称(以,为分隔并且价格后面有两位小数)"); System.out.print("请以以上格式输入:"); goodInfo = in.nextLine(); } goodInfo = goodInfo + "\n"; // try (FileOutputStream fos = new FileOutputStream(fileName, true)) { fos.write(goodInfo.getBytes()); System.out.println("数据成功存储在文件中"); } catch (IOException e){ e.printStackTrace(); } earPhone t3 = new earPhone(); t3.earPhone(); }
301,99.00,xg1
302,199.00,se1
303,1999.00,xm5
public class earPhone extends Goods { //耳机子类 public void earPhone() { Goods good = new earPhone(); goodsFill fi = () -> { String filePath = "goodsInfo"; // 文件名 List<Goods> goodsList = new ArrayList<>(); try (FileReader fileReader = new FileReader(filePath); BufferedReader reader = new BufferedReader(fileReader)) { String line; // 存储文件每行数据的变量 while ((line = reader.readLine()) != null) { // 读取每一行数据 String[] data = line.split(","); // 将每行数据按逗号分隔为字符串数组 int id = Integer.parseInt(data[0]); double price = Double.parseDouble(data[1]); String name = data[2]; goodsList.add(new Goods(id, price, name)); // 将数据存储到 ArrayList 中 } } catch (IOException e) { e.printStackTrace(); } Goods[] goods = goodsList.toArray(new Goods[goodsList.size()]); // 转换为数组 return goods; }; try { good.operate(fi.Fill()); //调用操作方法 } catch (MyException e) { // 捕获 MyException 异常,并输出异常信息 e.printStackTrace(); } } }
在这段代码中,首先创建了一个 ArrayList对象,用于存储从文件中读取出来的商品对象。接着创建了文件输入流和缓冲输入流对象,用于读取文件中的数据。
在while 循环中,使用 readLine() 方法读取每一行数据,并将其按逗号分隔成字符串数组,然后将其中的元素转换为对应的类型(例如 Integer.parseInt() 可以将字符串转换为整型),最后将数据封装成 Goods 对象并添加到 ArrayList 中。
最后,使用 toArray() 方法将 ArrayList 转换为数组,然后将该数组返回。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。