出现bug的点:输入数组无限大;

输入的整数,量大:

解决方案:向文件中输入随机数组,大小范围与量都可以控制。

源代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Random;
public class XieRuDuQu {
 public static void main(String[] args)  throws IOException{
  writeRandomByOutputStreamWriter("D:\\data.txt");
        System.out.println("最大子数组:"+max(readArrayByInputStreamReader("D:\\data.txt")));//输出最大子数组
    }
 
 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;
    }
 public static int[] readArrayByInputStreamReader(String txt) {
  /**
   *读取
   */        
  ArrayList<String> arrayList = new ArrayList<>();
  try {
   String encoding = "UTF-8";
      File file = new File(txt);
      InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);    
   BufferedReader bufferedReader = new BufferedReader(read);
   if (file.isFile() && file.exists()) {        
    String temp;   
    while ((temp = bufferedReader.readLine()) != null) { 
     arrayList.add(temp);              
     }
    bufferedReader.close();
    read.close();    
   }
  }catch (Exception e) {       
   e.printStackTrace();  
  }
   // 对ArrayList中存储的字符串进行处理  
        int length = arrayList.size();  
        int[] array = new int[length];  
        for (int i = 0; i < length; i++) {   
        String s = arrayList.get(i);   
        array[i] = Integer.parseInt(s);  
        } 
  return array;
 }
 public static void writeRandomByOutputStreamWriter(String txt) {
  /**
    * 文件写入随机数    
       */
       try {
      String encoding = "UTF-8"; 
   File file = new File(txt);       
           if(!file.exists()) 
           {   //如果不存在data.txt文件则创建 
               file.createNewFile(); 
               System.out.println("文件创建完成");              
           } 
           OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file), encoding);    
   BufferedWriter bufferedWriter = new BufferedWriter(write);
           //产生随机数据,写入文件 
           Random random = new Random(); 
           for(int i=0;i<10;i++) 
           {    
               int randint =(int)Math.floor((random.nextDouble()*100.0));   //产生0-10000之间随机数         
               bufferedWriter.write(String.valueOf(randint));      //写入一个随机数 
               bufferedWriter.newLine();       //新的一行 
           } 
           bufferedWriter.close();
           write.flush();
           write.close(); 
  
     
     }catch (Exception e) {       
    e.printStackTrace();  
   }
           
 }
}

文档:

运行结果:

Java文件写入与读取实例求最大子数组的更多相关文章

  1. JAVA文件写入FileWriter

    JAVA文件写入FileWriter 导包import java.io.FileWriter创建构造方法public FileWrite(String filename),参数是文件的路径及文件名(默 ...

  2. [LeetCode] Maximum Product Subarray 求最大子数组乘积

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  3. [LeetCode] 152. Maximum Product Subarray 求最大子数组乘积

    Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...

  4. java 文件及流读取

    在Java语言的IO编程中,读取文件是分两个步骤:1.将文件中的数据转换为流,2.读取流内部的数据.其中第一个步骤由系统完成,只需要创建对应的流对象即可,对象创建完成以后步骤1就完成了,第二个步骤使用 ...

  5. 面试题之——将文件夹下java文件写入到新的文件夹,并修改扩展名

    题目:将d:/code/java文件夹下的所有.java文件复制到d:/code/java/jad文件夹下并且将原来的文件的扩展名.java改为.jad 源代码: package com.zyh.in ...

  6. Java文件写入,换行

    import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOExce ...

  7. Python学习笔记——文件写入和读取

    1.文件写入 #coding:utf-8 #!/usr/bin/env python 'makeTextPyhton.py -- create text file' import os ls = os ...

  8. java文件写入和读出的序列化

    文件的写入入与读出都有它们自己的格式,不便于读入和取出,implement Serializable接口,实现任何个事文件的写入和读取取:

  9. 【PHP】文件写入和读取详解

    文章提纲: 一.实现文件读取和写入的基本思路 二.使用fopen方法打开文件 三.文件读取和文件写入操作 四.使用fclose方法关闭文件 五.文件指针的移动 六.Windows和UNIX下的回车和换 ...

随机推荐

  1. jYD框架使用

    jQuery是一个非常好的框架,涉及的内容比较多,随着现在浏览器的发展,原生JS的功能越来越强大,jQuery包含内容很多,但是常用的功能无非涉及到Dom操作,事件,样式,表单和Ajax交互.引入那么 ...

  2. sed用法去除行首和行末的中括号

    sed去掉行首和行末的中括号: sed -i 's:^\[::; s:\]$::;' newtrace_nlp.log.2018-08-02.bak 其余可依次类推.

  3. 6. 从Encoder-Decoder(Seq2Seq)理解Attention的本质

    1. 语言模型 2. Attention Is All You Need(Transformer)算法原理解析 3. ELMo算法原理解析 4. OpenAI GPT算法原理解析 5. BERT算法原 ...

  4. MPU6050带字符驱动的i2c从设备驱动2

    #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #inclu ...

  5. 基于μC/OS—III的CC1120驱动程序设计

    基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120   嵌入式操作系统   STM32F103ZE   ...

  6. Java源码阅读的真实体会(一种学习思路)

    Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈 ...

  7. [Z] 从Uncaught SyntaxError: Unexpected token ")" 问题看javascript:void的作用

    https://blog.csdn.net/hongweigg/article/details/78094338 问题    在前端编程中,突然出现Uncaught SyntaxError: Unex ...

  8. [原创]电路仿真设计multisim 14安装,破解,汉化教程

    硬件工程师开发产品.利用multisim 等辅助软件进行设计仿真可以有效提高开发效率,减少设计弯路. 本文博乐就带大家一起进行multisim 14安装破解汉化. 首先下载multisim 14安装文 ...

  9. K好数(DP)

    问题描写叙述 假设一个自然数N的K进制表示中随意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数. 求L位K进制数中K好数的数目. 比如K = 4,L = 2的时候.全部K好数为11.13.2 ...

  10. react服务端渲染同构报错Browser history needs a DOM

    https://github.com/nozzle/react-static/issues/343 去掉了browserRouter就不报错了,但是又会有其他报错..