3月12號筆記
阿新 • • 發佈:2022-03-15
昨天的程式的資料存放在一個叫”input.txt“的檔案中,還有一種奇怪的格式(例:一行六列):
1,
5,6,-3,8,-9,2
現在的問題是這個檔案怎麼讀?
複習輸入輸出流(基礎):
輸入輸出流可分為兩大類:位元組輸入輸出流,字元輸入輸出流。對於輸入的一個長度的資料,位元組流佔用一個位元組,字元流佔用兩個位元組
位元組流---inputstream,outputstream
字元流---reader,writer
現在我們要做的功能是從檔案裡讀資料,這樣就用到了檔案輸入輸出流
FileInputStream和FileOutputStream,這兩個是以後包裝的基礎,就像System.in和System.out一樣
對於上述檔案輸入輸出流,我們有兩種包裝方式,Buffered包裝和轉化為字元流InputstreamReader
(在輸入漢字時,希望輸入完了得到的是自己能看懂的字串,就轉化為字元流)
字元流也可以包裝BufferedReader,是BufferedInputstreamReader的簡寫
最後要注意的是,字元流的輸入單位是字元,Char;位元組流輸入的單位是位元組,Byte。
現在就可以讀檔案了
package my0311; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class Main { public static int max(int a,int b) { return a>b?a:b; } public static void main(String[] args) throws IOException { int[] a=new int[10010]; int[] res=new int[10010]; int n; BufferedReader br= new BufferedReader(new FileReader("src\\my0311\\myFile.txt")); String[] s=br.readLine().split(","); n=Integer.parseInt(s[0]); s=br.readLine().split(","); for(int i=1;i<=n;i++) { a[i]=Integer.parseInt(s[i-1]); } int k=a[0]; for(int i=1;i<=n;i++) { if(res[i-1]<0) res[i]=a[i]; else res[i]=a[i]+res[i-1]; k=max(k,res[i]); } System.out.println(k); } }