要求:数组从文件中读取
如果输入的数组很大,并且有很多大的数字,就会产生比较大的结果(考虑数的溢出),请保证你的程序能正常输出。
如果输入文件的参数有错误,这个程序应该能正常退出,并显示相应的错误信息。任何输入错误都不能导致你的程序崩溃。
设计思路:1、数的溢出:通过java.math里的BigInteger存储最大子数组和
源码
package shuzu; import java.io.BufferedReader;import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.math.BigInteger; public class shuzu{ public static void main(String[] args) throws IOException
{
String fileName ="D:\\shuzu.txt";
File file=new File(fileName);
if(!file.exists())
{
System.out.println("文件不存在!");
}
else if(file.exists() && file.length() == 2)
{
System.out.println("文件为空!");
}
else
{
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
int i,j;
int flag=0;
BigInteger[] m=new BigInteger[100000000];
while ((line=bufferedReader.readLine())!=null)
{
String []s=line.split(",");
for(i=0;i<s.length;i++)
{
String k=s[i];
for(j=0;j<k.length();j++)
{
if(!((k.charAt(j)>='0'&&k.charAt(j)<='9')||k.charAt(j)=='-'||k.charAt(j)==','))
{
System.out.println("文件输入不合法,必须全部由数字组成,中间分割用逗号!");
flag=1;
break;
}
}
BigInteger k1=new BigInteger(k);
m[i]=k1;
if(flag==1)
break;
}
for(i=1;i<s.length;i++)
{
if(m[i].add(m[i-1]).intValue()>m[i].intValue())
{
m[i]=m[i].add(m[i-1]);
}
}
for(i=0;i<s.length;i++)
{
if(m[i].subtract(m[0]).intValue()>=0)
{
m[0]=m[i];
}
}
if(flag==1)
break;
}
System.out.println(m[0]);
bufferedReader.close();
fileReader.close();
}
}
}
结果截图