2016-08-13 48 views
-1

这是一个编程书籍的例子,我了解,但是我面临一个大问题:MonthlySales.txt尚未由本书作者建立和解释。在节目结束了就是被问道:输入包含销售金额30天文件的名称:MonthlySales.txt我不明白这个Java程序

The total sales for the period is : 56.437.42 
The average daily sales were : 1881.25 

这里的程序:

import java.io.File; 
import java.io.IOException; 
import java.util.Scanner; 

import javax.swing.JOptionPane; 

public class SaleReport { 

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



     final int NUMDAYS = 30 ; 
     String fileName ; 
     double totalSales ; 
     double averageSales ; 

     fileName = getFileName(); 

     totalSales = getTotalSales(fileName); 

     averageSales = totalSales/NUMDAYS ; 

     displayResults(totalSales, averageSales); 

     System.exit(0); 


     } 

    public static String getFileName() 

    { 
     String file ; 

     file = JOptionPane.showInputDialog(" Enter the file name for 30 days sales "); 
     return file ; 

    } 

    public static double getTotalSales(String fileName) throws IOException 

    { 
     double total = 0.0 ; 
     double sales ; 

     File file = new File(fileName); 

     Scanner inputFile = new Scanner(file); 

     while(inputFile.hasNextLine()) 
     { 
      sales = inputFile.nextDouble(); 

      sales += sales ; 
      } 

     inputFile.close(); 
     return total ; 
    } 

    public static void displayResults(double total , double avg) 
    { 
     JOptionPane.showMessageDialog(null,String.format(" The total sales for the period is $%,.2f\n"+ 

      "The daily average sales were $%,.2f ", total, avg )); 
    } 

} 
+0

我从来没有处理java,但我认为这个代码只是计算你输入的文件的行数 –

+0

我认为他们缺少一条线。 Total总是0.0不是吗? –

+1

我认为你必须改变销售+ =销售总额+ =销售 –

回答

1

程序读取从线文件MonthlySales.txt并将它们转换为double。所以如果一个文件中有30个销售,每个销售都必须在一个新的行中。只要有Scanner,while循环要读取的行,Scanner将选取它在文件中看到的下一个数字并将其返回,它将添加到sales变量。

在计算机上的某个地方制作一个txt文件,并在30行中放入30个数字。当程序要求您输入路径时,输入它并且您的程序应该可以正常工作。还将sales += sales更改为total += sales

+0

我确实创建了一个名为MySales.txt的文件,并输入了30行数字。但它给我的错误:线程“主”java.io.FileNotFoundException异常:MySales.txt(Aucun fichier或dossier de ce类型) \t在java.io.FileInputStream.open0(本地方法) \t at java。 io.FileInputStream.open(FileInputStream.java:195) \t at java.io.FileInputStream。 (FileInputStream.java:138) \t at java.util.Scanner。 (Scanner.java:611) \t在SaleReport.getTotalSales(SaleReport.java:49) \t在SaleReport.main(SaleReport.java:20) – Freddy53

+0

它无法找到该文件:MySales.txt和它的存在! – Freddy53

+0

@ Freddy53该文件应该在应用程序的工作目录中。或者指定一个绝对路径名(例如'C:/ MySales.txt'出现提示时 – Matthieu

0

我相信你的书

书的作者想证明文件的使用情况下,假设你有一本杂志或类似这样的东西,当你买了在文件输入/输出部分产品,你把它的价格在文件中(手动或不,我们不在乎这里),并在月底你想得到总销售额和平均销售额在一个月(30天),所以文本文件应包含已购买的产品的价格。

通过更改sales+=salestotal+=sales您将得到类似this(如果我们假设我们只有五个销售)。

这是我们应该得到的结果:

1 + 2 + 3 + 4 + 5 = 15

15/30 = 0.5

+0

正文文件应该在项目文件夹中,右键单击Eclipse中的项目文件夹选择New-> File,它会询问你一个名字,并按你的要求命名(sales.txt ..),这对我有用 – SADMI

+0

T他的路径是正确的 – Freddy53

+0

当我写代码时,Eclipse建议的导入包是:import java.io.File; import java.io.IOException; import java.util.Scanner; import javax.swing.JOptionPane;但尽管没有错误,它会在运行时弹出错误:只有当我将导入的软件包更改为:import java.util.Scanner; import java.io. *; import javax.swing.JOptionPane;它运行正常为什么? – Freddy53