Java文件写入与读取实例求最大子数组
出现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文件写入与读取实例求最大子数组的更多相关文章
- JAVA文件写入FileWriter
JAVA文件写入FileWriter 导包import java.io.FileWriter创建构造方法public FileWrite(String filename),参数是文件的路径及文件名(默 ...
- [LeetCode] Maximum Product Subarray 求最大子数组乘积
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- [LeetCode] 152. Maximum Product Subarray 求最大子数组乘积
Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...
- java 文件及流读取
在Java语言的IO编程中,读取文件是分两个步骤:1.将文件中的数据转换为流,2.读取流内部的数据.其中第一个步骤由系统完成,只需要创建对应的流对象即可,对象创建完成以后步骤1就完成了,第二个步骤使用 ...
- 面试题之——将文件夹下java文件写入到新的文件夹,并修改扩展名
题目:将d:/code/java文件夹下的所有.java文件复制到d:/code/java/jad文件夹下并且将原来的文件的扩展名.java改为.jad 源代码: package com.zyh.in ...
- Java文件写入,换行
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOExce ...
- Python学习笔记——文件写入和读取
1.文件写入 #coding:utf-8 #!/usr/bin/env python 'makeTextPyhton.py -- create text file' import os ls = os ...
- java文件写入和读出的序列化
文件的写入入与读出都有它们自己的格式,不便于读入和取出,implement Serializable接口,实现任何个事文件的写入和读取取:
- 【PHP】文件写入和读取详解
文章提纲: 一.实现文件读取和写入的基本思路 二.使用fopen方法打开文件 三.文件读取和文件写入操作 四.使用fclose方法关闭文件 五.文件指针的移动 六.Windows和UNIX下的回车和换 ...
随机推荐
- Canvas入门到高级详解(下)
四. Canvas 开发库封装 4.1 封装常用的绘制函数 4.1.1 封装一个矩形 //思考:我们用到的矩形需要哪些绘制的东西呢? 矩形的 x.y坐标 矩形的宽高 矩形的边框的线条样式.线条宽度 矩 ...
- BlackHat Arsenal USA 2018 ToolsWatch黑客工具库
原文链接:https://medium.com/hack-with-github/black-hat-arsenal-usa-2018-the-w0w-lineup-7de9b6d32796 Blac ...
- git 创建tag , 查看tag , 删除tag
简介 用git了很久了,也喜欢这个版本控制工具,今天来分享下,怎么用命令创建tag,查看tag,删除tag和把本地tag推到远程git服务器上 C:\Users\\WandaPuHuiProject ...
- gsoap入门:C/C++代码生成及编译--包含soapcpp2 -qname添加命名空间后报错的解决方法--可用
gsoap是什么 先来一段百度百科,说说gsoap是什么: gSOAP一种跨平台的开源的C/C++软件开发工具包.生成C/C++的RPC代码,XML数据绑定,对SOAP Web服务和其他应用形成高效的 ...
- 我对CopyOnWrite的思考
CopyOnWrite 后文中表述为 COW CopyOnWrite容器即写的时候复制一个新的容器进行写:通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy ...
- Unity游戏推送技术
https://www.cnblogs.com/wuzhang/p/wuzhang20150401.html https://www.cnblogs.com/yangwujun/p/5789969.h ...
- 自动化测试工具Katalon简单使用
前一段时间接触了下Katalon,当时只是简单用了下,今天看到Katalon给发邮件,发现都忘记了,因此重新学习并记录下来 Katalon是在Selemium相同的内核上构建起来的一个自动化测试工具 ...
- 微信小程序-bug-调用wx.login()无响应的原因和解决方案
想必,最近有些小程序开发者,在调用wx.login()的时候,在部分IOS上无响应的情况: 补充一点:在测试模式,调试模式,都是OK的,一上正式环境就GG了,百思不得其解啊! 响应结果如下: 在suc ...
- 同时使用Union和Order by问题(ORA-00933错误)解决
之前,同事在编写视图的过程中遇到这样了这个错误.我把简化后的语句整理如下: 1: select 2: '2016' as nf, 3: qxdm, 4: round(sum(tbdlmj)/10000 ...
- Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子
转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及 ...