从文件中读取数据,去除指定字符
今天上非常想念的建民哥的网课,有这样一道习题,从文件中读取二位数组,第一行是行,第二行是列,第三行是元素,它们用逗号隔开,求他们的子数组最大值。
我的思路是先读取所有的数,然后组成一个一维数组,去掉开头两个(行和列),把其余的都存入一维数组中。再像一维数组一样求和。
其中就出现了问题,比如如何读取文件。在我的印象里读取文件是无差别读取,没办法做区别,因此读取时它就会因为逗号直接崩掉。后来通过百度我知道了一种新的办法可以去除里面不需要的东西,再把剩下的有用的数据从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(); } }
代码很简单,很容易看懂。
完毕。