文章目录
前言
有了上次经验教训,特地加上了文字描述,记录本菜鸟写的代码。
一、要求是什么?
(2) 参考例10-16,解析一文件(商品列表.txt)中的价格数据,
并计算平均价格,见书上 p.321 第4.3题
二、我的思路
1.先创立文件类
File f = new File("C:\\Users\\86137\\Desktop\\Java实验\\Java实验要求\\10 实验十 输入输出流\\10 实验十 输入输出流","商品列表.txt");
注意,第一个传参字符串是文件高一级路径,后一个是文件名
2.然后调用各种判断函数,看是否出问题
String str= f.getName();
System.out.println("文件的名字:"+str);
if(f.exists()){
System.out.println("文件是存在的");
}
else{
System.out.println("文件是不存在的");
}
if(f.canRead()){
System.out.println("文件是可读的");
}
else{
System.out.println("文件是不可读的");
}
if(f.canWrite()){
System.out.println("文件是可写的");
}
else{
System.out.println("文件是不可写的");
}
System.out.println("文件的长度:"+f.length());
System.out.println("文件的父路径"+f.getAbsolutePath());
3.用Scanner类解析文件
3.1注意事项
Scanner类解析文件时,必需加上try …catch…。检验文件是否正常打开,抓捕异常,否则会出错异常类是:FileNotFoundException
这次为了捕捉到double数据,要先cin.useDelimiter,指定分割方式,否则将提取不到double数据
3.2 实现代码
try {
boolean tt=true;
Scanner cin = new Scanner(f);
double num=0;
cin.useDelimiter("[^0123456789.]+");
double sum=0;
while(cin.hasNextDouble()) {
num++;
Double price = cin.nextDouble();
System.out.println("商品价格"+num+":"+price);
sum+=price;
}
System.out.println("平均价格:"+sum/num);
}catch(FileNotFoundException e){
e.printStackTrace();
System.out.println("不能打开文件");
}
三、我的代码
package ex_10;
import java.io.File;
import java.util.Scanner;
import java.io.FileNotFoundException;
public class outinput {
public static void main(String[] args) {
File f = new File("C:\\Users\\86137\\Desktop\\Java实验\\Java实验要求\\10 实验十 输入输出流\\10 实验十 输入输出流","商品列表.txt");
String str= f.getName();
System.out.println("文件的名字:"+str);
if(f.exists()){
System.out.println("文件是存在的");
}
else{
System.out.println("文件是不存在的");
}
if(f.canRead()){
System.out.println("文件是可读的");
}
else{
System.out.println("文件是不可读的");
}
if(f.canWrite()){
System.out.println("文件是可写的");
}
else{
System.out.println("文件是不可写的");
}
System.out.println("文件的长度:"+f.length());
System.out.println("文件的父路径"+f.getAbsolutePath());
try {
boolean tt=true;
Scanner cin = new Scanner(f);
double num=0;
cin.useDelimiter("[^0123456789.]+");
double sum=0;
while(cin.hasNextDouble()) {
num++;
Double price = cin.nextDouble();
System.out.println("商品价格"+num+":"+price);
sum+=price;
}
System.out.println("平均价格:"+sum/num);
}catch(FileNotFoundException e){
e.printStackTrace();
System.out.println("不能打开文件");
}
}
}
4.我的运行结果:
总结
有了上次经验教训,特地加上了文字描述