題一、編寫程序,創建一個數據文件a.txt,並通過FileWrite對象向其中輸出整數1~100
package demo1;
import java.io.*;
public class 題一 {
public static void main(String[] args) {
// TODO 自動生成的方法存根
try {
FileWriter fw=new FileWriter("./src/a.txt",true);
for(int i=1;i<=100;i++){
fw.write(i+" ");
}
fw.close();
System.out.println("寫入文件成功");
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
}
題二、從上一題生成的數據文件a.txt中讀取數據,每讀一個數據計算它的平方和平方根,然後把這些數據輸出到一個新數據文件b.txt
package demo1;
import java.io.*;
public class 題二 {
public static void main(String[] args){
// TODO 自動生成的方法存根
try {
FileWriter fw=new FileWriter("src/b.txt",true);
FileReader fr=new FileReader("src/a.txt");
int result=fr.read();
System.out.println("讀取文件的內容如下:");
while(result!=-1){
System.out.print((String.valueOf((char)result)));
result=fr.read();
}
for(int i=1;i<=100;i++){
fw.write(i*i+" "+Math.sqrt(i));
}
fw.close();
System.out.println("寫入文件成功");
fr.close();
} catch (FileNotFoundException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
}
個人認為你第一題的代碼符合要求,能夠完成題目所要求的功能;但是第二題就不符合要求了,題目要求使用讀取的數據計算平方和和平方根,而你的代碼使用了自己的for循環進行輸出,這是不符合要求的。也就是說你根本沒有使用讀取的數據。
考慮到第二題的解決方案,建議你第一題也做相應的修改,即沒輸出一個數據就換行,然後第二題中使用BufferedReader.readLine()方法來讀取每一行的數據,這樣就可以直接使用了讀取的數據了。使用FileReader時讀取的是每一個char,需要對數字進行判斷,不好用。下面是兩道題目的我的答案,請參考:
題一:
import java.io.*;
public class Question1 {
public static void main(String[] args) {
// TODO 自動生成的方法存根
try {
FileWriter fw = new FileWriter("./src/a.txt", true);
for (int i = 1; i <= 100; i++) {
fw.write(i + "\r\n");
}
fw.close();
System.out.println("寫入文件成功");
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
}
題二
import java.io.*;
public class Question2 {
public static void main(String[] args) {
// TODO 自動生成的方法存根
try {
FileWriter fw = new FileWriter("src/b.txt", true);
BufferedReader br = new BufferedReader(new FileReader("src/a.txt"));
String result = br.readLine();
System.out.println("讀取文件的內容如下:");
int readValue = 0;
while (result != null) {
System.out.println(result);
readValue = Integer.valueOf(result);
fw.write(readValue * readValue + "\t" + Math.sqrt(readValue)
+ "\r\n");
result = br.readLine();
}
System.out.println("寫入文件成功");
fw.close();
br.close();
} catch (FileNotFoundException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
}