我终于让它工作了。我意识到处理单个行和从文本文件中分离单个数字的最方便的方法是使用 StringTokenizer。这是完整的工作代码,您只需要名为“SalesData.txt”的文本文件,我的包含以下 3 行:
1245.67,1490.07,1679.87,2371.46,1783.92,1461.99,2059.77 2541.36,2965.88,1965.32,1845.23,7021.11,9652.74,1469.36 2513.45,1963.22,1568.35,1966.35,1893.25,1025.36,1128.36
该程序输出以下内容: - 每周总销售额 -
每周日
平均值
- 所有周的
总
销售额 - 每周平均总销售额 - 销售额最高的一周 - 销售额
最低的一周
DecimalFormat formatter = new DecimalFormat("#0.00");
// create file object
File salesData = new File("SalesData.txt");
// open file
Scanner file = new Scanner(salesData);
// declare 2 dimensional array
double[][] weeklySales = new double[3][7];
// loop to initialize token
int row = 0;
while(file.hasNext()) {
// initialize token
String line = file.nextLine();
StringTokenizer tokens = new StringTokenizer(line, ",");
// fill columns and rows
int col = 0;
while(tokens.hasMoreTokens()) {
// convert to double and assign to token
weeklySales[row][col] = Double.parseDouble(tokens.nextToken());
// move up 1 column
col++;
}
// move down 1 row
row++;
}
// calculate weekly sales
double week1Sales = 0, week2Sales = 0, week3Sales = 0;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 5; j++) {
double daily = weeklySales[i][j];
if(i == 0)
week1Sales += daily;
else if(i == 1)
week2Sales += daily;
else if(i == 2)
week3Sales += daily;
}
}
// week 1 sales
System.out.println("Week 1 total sales: $" +formatter.format(week1Sales));
// week 2 sales
System.out.println("Week 1 total sales: $" +formatter.format(week2Sales));
// week 3 sales
System.out.println("Week 1 total sales: $" +formatter.format(week3Sales));
// average daily for week 1
System.out.println("Daily average for week 1: $" +formatter.format(week1Sales / 7));
// average daily for week 2
System.out.println("Daily average for week 2: $" +formatter.format(week2Sales / 7));
// average daily for week 3
System.out.println("Daily average for week 3: $" +formatter.format(week3Sales / 7));
// total for all weeks
double weeklyTotal = week1Sales + week2Sales + week3Sales;
System.out.println("Total sales of all the weeks: $" +formatter.format(weeklyTotal));
// average weekly sales
System.out.println("Average weekly total: $" + formatter.format(weeklyTotal / 3));
// week number with highest sales
if(week1Sales > week2Sales)
if(week1Sales > week3Sales)
System.out.println("The week with the highest sales is week 1.");
else
System.out.println("The week with the highest sales is week 3.");
else if(week2Sales > week3Sales)
if(week2Sales > week1Sales)
System.out.println("The week with the highest sales is week 2.");
else
System.out.println("The week with the highest sales is week 1.");
else
System.out.println("The week with the highest sales is week 3.");
// week number with the lowest
if(!(week1Sales > week2Sales))
if(!(week1Sales > week3Sales))
System.out.println("The week with the lowest sales is week 1.");
else
System.out.println("The week with the lowest sales is week 3.");
else if(!(week2Sales > week3Sales))
if(!(week2Sales > week1Sales))
System.out.println("The week with the lowest sales is week 2.");
else
System.out.println("The week with the lowest sales is week 1.");
else
System.out.println("The week with the lowest sales is week 3.");