嘿所以我們的目標是從一個文本文件讀取運動數據並將該數據的摘要打印到另一個文本文件。輸入文件包含幾個記錄從txt文件 樣品輸入如下:Java文件輸入和數據處理到文件輸出
1) Joe Schmoe
76.5 20 30 25 10 75.9
Jilly Momilly Schmill
50.5 30 30 35 37 28 32 35 34 34 49.2
Gail Quail
62.3 15 17 10 3 10 63.6
Frank Crank
83.2 5 83.2
John Quann
57.9 30 32 35 32 30 57.2
我的問題是我不能讓我的代碼來讀取每個人我只能得到它讀取的第一個或發送給我一個無限循環或輸入不匹配。 繼承人我的代碼:
`//Doubler.java
import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.InputMismatchException;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.io.PrintWriter;
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.EOFException;
import java.io.IOException;
public class ExerciseSummary
{
private Scanner inputStream = null;
private PrintWriter outputStream = null;
private int next = 0;
private int sum = 0;
private int count = 0;
private double avg = 0;
private double firstWeight = 0;
private double lastWeight = 0;
private String line;
public static void main(String[] args)
{
ExerciseSummary summary = new ExerciseSummary();
summary.connectToInputFile();
summary.connectToOutputFile();
summary.summaryData();
summary.closeFiles();
System.out.println("\nAll numbers from the input file have been");
System.out.println("summarized and copied to the output file.");
}
public void connectToInputFile()
{
String inputFileName = getFileName("\nEnter name of input file: ");
try
{
inputStream =
new Scanner(new File(inputFileName));
}
catch(FileNotFoundException e)
{
System.out.println("File " + inputFileName + " not found.");
System.exit(0);
}
catch(IOException e)
{
System.out.println("Error opening input file " + inputFileName);
System.exit(0);
}
}
private String getFileName(String prompt)
{
String fileName = null;
System.out.print(prompt);
Scanner keyboard = new Scanner(System.in);
fileName = keyboard.next();
return fileName;
}
public void connectToOutputFile()
{
String outputFileName = getFileName("Enter name of output file: ");
try
{
//outputStream = new PrintWriter(outFile);
outputStream =
new PrintWriter(outputFileName);
}
catch(IOException e)
{
System.out.println("Error opening output file " + outputFileName);
//System.out.println(e.getMessage());
System.exit(0);
}
}
public void summaryData()
{
try
{
while (inputStream.hasNext());
{
line = inputStream.nextLine();
firstWeight = inputStream.nextDouble();
while (inputStream.hasNextInt())
{
sum += inputStream.nextInt();
count ++;
avg = (sum/count);
}
lastWeight = inputStream.nextDouble();
outputStream.println(line + " " + firstWeight + " " + sum + " " + count + " " + lastWeight + " " + avg + " " + (lastWeight-firstWeight));
}
}
catch (InputMismatchException e)
{
System.out.print(e);
System.exit(0);
}
}
public void closeFiles()
{
inputStream.close();
outputStream.close();
}
}
輸出記錄輸入記錄的摘要。它由TAB分隔的四個值組成:該參與者的數據天數,行使的總分鐘數,每天運動的平均分鐘數以及失去的總體重量(如果參與者體重增加,這將是負面的) 。該名稱已被讀入,但未再打印出來(我們正在匿名數據)。對於上面的記錄,該主題的名字是Joe Schmoe,他的起始重量是76.5kg。喬鍛鍊了四天(起始體重和最終體重之間有四個整數值),總共85分鐘(20 + 30 + 25 + 10 = 85)。他的最終體重是75.9公斤。輸出記錄是: 4 85 21.25 0.5999999999999943
我一直令人頭大我的大腦兩週任何幫助會這麼不勝感激謝謝
無限循環或輸入不匹配發生在哪裏? – Houseman
它要求輸入文件的名稱後,它會進入無限循環 – user3389626
你可以發佈第一個人的預期輸出嗎? – JohnnyAW