求数字数组最大和的子数组以及将数据输入到txt文件中

今天进行测试,在以前求子数组最大和的基础上,新增了将数据输入到文件夹中。

源代码:

import java.io.*;
import java.util.Scanner;
public class as
{
public static void main(String[] args )
{
Scanner in=new Scanner(System.in);
int hang;
int lie;
int length;
int yichu=0;
//输入需要的数据
System.out.print("请输入数组的行数");
hang=in.nextInt();
System.out.print("请输入数组的列数");
lie=in.nextInt();
System.out.print("请输入数组的数字数");
length=in.nextInt();
int []number=new int[length];
for(int i=0;i<length;i++)
{
number[i]=in.nextInt();
if(number[i]>Integer.MAX_VALUE||number[i]<Integer.MIN_VALUE)
{
yichu=1;
break;
}
}
//调用函数,将数据存入到txt文件中
if(yichu==0)
{
cunChu(hang,lie,number);
}
else
{
System.out.print("输入数字溢出");
}
int[] add=new int[length];
int max=number[0];
add[0]=number[0];
for(int i=1;i<length;i++)
{
if(add[i-1]+number[i]<0)
{
add[i]=0;
}
else
{
add[i]=number[i]+add[i-1];
}
}
max=add[0];
//循环遍历,求出max最大值
for(int i=0;i<length-1;i++)
{
if(add[i+1]>max)
{
max=add[i+1];
}
}
System.out.print(max);
}
public static void cunChu(int hang,int lie,int num[]) {
try
{
File file=new File("F:\\大二下java\\input.txt");
if(!file.exists())
{
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file,false);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);
int length=num.length;
String shuzi[]=new String[length];
String stringHang=String.valueOf(hang+"\r\n");
String stringLie=String.valueOf(lie+"\r\n");
for(int i=0;i<length;i++)
{
shuzi[i]=String.valueOf(num[i]);
}
bw.write(stringHang);
bw.write(stringLie);
for(int i=0;i<length;i++)
{
bw.write(shuzi[i]+",");
}
bw.newLine();
bw.flush();
bw.close();
osw.close();
fos.close();
}
catch (FileNotFoundException e1)
{
e1.printStackTrace();
} catch (IOException e2)
{
e2.printStackTrace();
}
}
}

其中包括了将数据存放在文件夹中,以及对数组输入的数据溢出判断,但是我自己在运行时发现了错误,如果输入的数字太大,好像输入流就会报错,根本不会去判断溢出。

除此之外,向文件夹存放数字时,它只是显示框框,存放字符串时没有问题,这还需要去修改。

posted @ 2022-03-18 19:07  听风1234  阅读(46)  评论(0编辑  收藏  举报