从文件中读取数据,去除指定字符

今天上非常想念的建民哥的网课,有这样一道习题,从文件中读取二位数组,第一行是行,第二行是列,第三行是元素,它们用逗号隔开,求他们的子数组最大值。

我的思路是先读取所有的数,然后组成一个一维数组,去掉开头两个(行和列),把其余的都存入一维数组中。再像一维数组一样求和。

其中就出现了问题,比如如何读取文件。在我的印象里读取文件是无差别读取,没办法做区别,因此读取时它就会因为逗号直接崩掉。后来通过百度我知道了一种新的办法可以去除里面不需要的东西,再把剩下的有用的数据从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();
    }
}

代码很简单,很容易看懂。

完毕。

posted @ 2022-03-18 21:31  吕洞玄  阅读(108)  评论(0编辑  收藏  举报