1. 程式人生 > 其它 >從檔案中讀取資料,去除指定字元

從檔案中讀取資料,去除指定字元

今天上非常想念的建民哥的網課,有這樣一道習題,從檔案中讀取二位陣列,第一行是行,第二行是列,第三行是元素,它們用逗號隔開,求他們的子陣列最大值。

我的思路是先讀取所有的數,然後組成一個一維陣列,去掉開頭兩個(行和列),把其餘的都存入一維陣列中。再像一維陣列一樣求和。

其中就出現了問題,比如如何讀取檔案。在我的印象裡讀取檔案是無差別讀取,沒辦法做區別,因此讀取時它就會因為逗號直接崩掉。後來通過百度我知道了一種新的辦法可以去除裡面不需要的東西,再把剩下的有用的資料從String型轉化為int型。

所用方法如下:

        int[] a = new int[1000];
        int i=0,m=0;
        String str 
= null; String[] array1 = null; String line = null; int n = 3; BufferedReader br = new BufferedReader(new FileReader("D:\\java專案\\2022.3.18\\src\\input.txt")); while (n-- > 1 ) { br.readLine(); } while ((line = br.readLine()) != null
) { System.out.println(line); array1=line.split(","); for(m=0;m<array1.length;m++,i++) { a[i] = Integer.valueOf(array1[m]); } }

其中的array1=line.split(",");就是我們去除逗號的工具。為了方便以後這道題再出現,為我的學弟學妹留下我的程式碼

package kaoshi;

import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class ceshi20 { public static int Largest(int[] list, int length) { if(length==0) { System.out.println("沒有有效陣列"); return 0; } int ans = -1000000; int sum = 0; for(int i=0; i<length; i++) { sum += list[i]; if(sum > ans) { ans = sum; } if(sum < 0) { sum = 0; } } System.out.println(length); if(ans==0) { ans=list[0]; for(int j=0;j<length;j++) { if(ans < list[j]) { ans=list[j]; } } } return ans; } public static void main(String[] args) throws IOException { int[] a = new int[1000]; int g=0,i=0,m=0; String str = null; String[] array1 = null; String line = null; int n = 3; BufferedReader br = new BufferedReader(new FileReader("D:\\java專案\\2022.3.18\\src\\input.txt")); while (n-- > 1 ) { br.readLine(); } while ((line = br.readLine()) != null) { System.out.println(line); array1=line.split(","); for(m=0;m<array1.length;m++,i++){ a[i] = Integer.valueOf(array1[m]); } } int max; max = Largest(a, array1.length); System.out.println(max); br.close(); } }

程式碼很簡單,很容易看懂。

完畢。