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下的回车和换 ...
随机推荐
- 再杀掉app之后 删除NSUserDefault存在本地的数据
这两天在处理 app退出后删除本地数据 在appDelegate里的这个函数里设置发现进不去 - (void)applicationWillTerminate:(UIApplication*)ap ...
- 基于jQuery扁平多颜色选项卡切换代码
基于jQuery扁平多颜色选项卡切换代码,支持自动轮播切换,鼠标滑过切换的jQuery特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=" ...
- 【iCore4 双核心板_uC/OS-II】例程二:任务的建立与删除
一.实验说明: 本例程建立三个任务,通过任务寄存器来实现任务的建立与删除功能.红灯和绿灯同时以固定 频率闪烁,当任务寄存器为5时,删除绿灯闪烁的任务LED1,此时只有红灯闪烁,当任务寄存器的 值为10 ...
- JSP之开发环境搭建
1.下载JDK1.8(或JDK1.7),并进行安装和配置,主要是配置环境变量JAVA_HOME及Path. 2.下载并配置Tomcat8.0(或Tomcat7.0). Windows平台请下载Tomc ...
- Tensorflow学习资源
https://tensorflow.google.cn/ 中文官网 https://www.w3cschool.cn/tensorflow_python/tensorflow_python-gnwm ...
- python 搭建一个http服务的小例子
一.创建Server 1.Dos 命令 python -m BaseHTTPServer [port] 默认端口是8000, 2.Python 脚本启动 #coding:utf-8 ''' Creat ...
- IE 浏览器不支持 ES6 Array.from(new Set( )) SCRIPT438: 对象不支持“from”属性
[转]解决老浏览器不支持ES6的方法 现象: Array.from(new Set( )) SCRIPT438: 对象不支持“from”属性或方法 解决方法: 安装babel 引入browser. ...
- 让织梦内容页arclist标签的当前文章标题加亮显示
很多人在用织梦做站的时候,会用到在当前栏目页面,给当前栏目标题使用指定样式如标题加亮,或者放个背景图.这是一个很常用和实用的功能,比如在导航页面,标识当前在浏览哪个栏目.如下图: 但是有些时候,我们在 ...
- osg shader 相机观察矩阵逆矩阵 求顶点世界坐标
uniform mat4 osg_ViewMatrixInverse;//osg内置uniform void main() { vec4 posWorld = osg_ViewMatrixInvers ...
- 115、如何构建Android MVVM 应用框架(转载)
转载:http://android.jobbole.com/85198/