读取文件并将字符串数组转化为整形数组

举例:通过读取文件,求一维数组的最大子数组

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class xieru {
    public static void main(String[] args)  throws IOException{
        //文件读入数组
        try {
            String encoding = "UTF-8";
            File file = new File("D:\\zhengshu.txt");//文档路径
            if (file.isFile() && file.exists()) {
                InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);
                BufferedReader bufferedReader = new BufferedReader(read);
                String temp;
                int[] a = null;
                while ((temp = bufferedReader.readLine()) != null) {
                     int[] ary = aryChange(temp);//通过函数把字符串数组解析成整数数组
                     a = ary;
                    System.out.println("读取:"+temp);//打印
                    }
                read.close();
                System.out.println("最大子数组:"+max(a));//输出最大子数组
            } else {
                    System.out.println("找不到指定的文件");
                    }
            }catch (Exception e) {
                System.out.println("读取文件内容出错");
                e.printStackTrace();
            }
    }

    public static int[] aryChange(String temp) {
        /**
         * 字符串数组解析成整型数组
         */
        String[] ss = temp.trim().split("\\s+");// .trim()可以去掉首尾多余的空格
                                                // .split("\\s+")表示用正则表达式去匹配切割
                                                //   \\s+表示匹配一个或者以上的空白符
        int[] ary = new int[ss.length];
        for (int i = 0; i < ary.length; i++) {
            ary[i] = Integer.parseInt(ss[i]);// 解析数组的每一个元素
        }
        return ary;// 返回一个整型数组
    }
    public static int max(int a[]) {
        /**
         * 求一维数组最大子数组
         */
        int x=a.length;
        int b[][]=new int[x][x];//存子数组
        int c[]=new int[x];//存二维数组每一行的最大值
        for(int i=0;i<x;i++) {//所有子数组存入二维数组中:以第i个开头的子数组们存入第i行
            for(int j=0;j<x;j++) {//求出二维数组的一行
                int sum=0;
                for(int s=i;s<=j;s++){//求每一个子数组
                sum+=a[s];
                }
                b[i][j]=sum;//存子数组
            }
        };
        for(int i=0;i<x;i++) {//i为行
            for(int j=0;j<x;j++) {//j为列
                if(b[i][j]>c[i]) {
                    c[i]=b[i][j];
                }
            }
        }
        int s=0;
        for(int i=0;i<c.length;i++) {    

            if(s<c[i]) {
                s=c[i];
            }
        };
        return s;
    }

}

运行结果:

原文地址:https://www.cnblogs.com/sengzhao666/p/10612687.html

时间: 2024-10-13 23:01:25

读取文件并将字符串数组转化为整形数组的相关文章

利用PushbackReader读取文件中某个字符串之前的内容

package File; import java.io.FileReader; import java.io.IOException; import java.io.PushbackReader; /*读取文件中某个字符串之前的文件*/ //PushbackInputStream,PushbackReader应用 public class PushbackTest { public static void main(String[] args) { try(PushbackReader pr

将字符串数组转换成整形数组

/// <summary> /// 将字符串数组转换成整形数组/// </summary> /// <param name="Content"></param> /// <returns></returns> protected static int[] ToIntArray(string[] Content) { int[] c = new int[Content.Length]; for (int i = 0;

Java读取文件,将字符串转化成日期类型,将日期类型进行加减

最近总用Java读取文件,发现了一种我个人觉得比较好的方法,现在分享给大家 public static void main(String[] args) throws Exception { FileInputStream f = new FileInputStream("文件路径"); InputStreamReader fileInputStream = new InputStreamReader(f); BufferedReader br = new BufferedReader

IO流的练习5 —— 读取文件中的字符串,排序后写入另一文件中

需求:已知s.txt文件中有这样的一个字符串:“hcexfgijkamdnoqrzstuvwybpl” 请编写程序读取数据内容,把数据排序后写入ss.txt中. 分析: A:读取文件中的数据 B:把数据存在一个字符串中 C:把字符串转换成字符串数组 D:对字符串数组进行排序 E:数组转换成字符串 F:把字符串写入文件中 1 public static void main(String[] args) throws IOException { 2 // 读取文件中的数据 缓冲字符输入流 3 Buf

D. 读取文件中中文字符串的做法

<?php //$fname文件名称 $fname = "./c.txt"; //file_get_contents() 函数把整个文件读入一个字符串中. $contents = file_get_contents($fname); //获取文件的编码方式 $encoding = mb_detect_encoding($contents, array('GB2312','GBK','UTF-16','UCS-2','UTF-8','BIG5','ASCII')); $fp=fop

php中将SimpleXMLElement Object数组转化为普通数组

做微信开发,鉴于微信POST的消息是XML数据包,通过SimpleXMLElement Object获取的数据不好操作,需要转化为普通数组. 网上找了很多方法都不理想,发现通过json_decode和json_encode可以转化,遂分享给大家. $postStr = '<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]>

在Javascript中什么是伪数组?如何将伪数组转化为标准数组?

伪数组(类数组): 无法直接调用数组方法或期望length属性有什么特殊的行为,不具有数组的push,pop等方法,但仍可以对真正数组遍历方法来遍历它们.典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组.可以使用Array.prototype.slice.call(fakeArray)将数组转化为真正的Array对象. function log(){ var args

JS数组之伪数组以及伪数组转化为标准数组

什么是伪数组? 1,具有length属性 2,能够使用数组遍历方法遍历它们 3,不具有数组的push,pop等方法 哪些是伪数组? 典型的是函数的argument参数,还有像调用getElementsByTagName,document.childNodes之类的,它们都返回NodeList对象都属于伪数组, 诸如var obj5 = { 99: ‘abc’, length: 100 }这样的数据也是伪数组 真数组的判断方法 * 如何判断数据是不是真数组:* 1.数据 instanceof Ar

在Javascript中什么是伪数组?如何将伪数组转化成标准数组?

在js中,数组是特殊的对象,凡是对象有的性质,数组都有,数组表示有序数据的集合,而对象表示无序数据的集合. 那伪数组是什么呢,当然它也是对象,伪数组一般具有以下特点: 按索引方式存储数据: 具有length属性: 没有数组的push.shift.pop等方法; function的arguments对象,还有getElementsByTagName.ele.childNodes等返回的NodeList对象,或者自定义的某些对象,这些都可以是伪数组. 我们可以通过以下几种方式将伪数组转换为标准数组: