Java实验十内容二


前言

有了上次经验教训,特地加上了文字描述,记录本菜鸟写的代码。


一、要求是什么?

(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.我的运行结果:

在这里插入图片描述

总结

有了上次经验教训,特地加上了文字描述

猜你喜欢

转载自blog.csdn.net/weixin_51422230/article/details/121214451