标签:返回 java int sum 整数 数组 import maxsum
题目要求:返回一个整数数组中最大子数组的和
具体要求:程序要使用的数组放在一个叫 input.txt 的文件中
文件格式是:
数组的行数,数组的列数,
每一行的元素用逗号分开,每一个数字都是有符号32位整数。 当然, 行数和列数都是正整数。
例如下面的文件说明数组是有1行, 6列 , 元素依次是: 5, 6, –3, 8, –9, 2
安全性扩展:
如果输入的数组很大, 并且有很多大的数字, 就会产生比较大的结果 (考虑一下数的溢出), 请保证你的程序能正常输出。另外, 如果输入文件的参数有错误, 这个程序应该能正常退出, 并显示相应的错误信息。 任何输入错误都不能导致你的程序崩。
源代码:
package kehouzuoye;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class fileshuzuhe {
public static void main(String[] args) throws IOException
{
int length;
int[] a=new int[10000];
BufferedReader br= new BufferedReader(new FileReader("/Users/txt/input.txt"));
String[] s1=br.readLine().split(","); //readLine()是读取文件中的一行,读完这一行之后会自动指向下一行,返回的是一个字符串类型。
//split() 方法用于把一个字符串分割成字符串数组。
length=Integer.parseInt(s1[0]); // Integer.parseInt(s)的作用就是把字符串s解析成有符号的int基本类型。
String[] s2=br.readLine().split(",");
for(int i=0;i<length;i++)
{
a[i]=Integer.parseInt(s2[i]);
}
int maxsum=0,sum=0;
maxsum=a[0];
for(int i=0;i<=length;i++)
{
sum = sum + a[i];
if(sum<0)
sum=0;
if(sum>maxsum)
maxsum=sum;
}
if(maxsum==0) {
maxsum=a[0];
for(int i=1;i<length;i++) {
if(a[i]>maxsum)
maxsum=a[i];
}
}
System.out.println("最大子数组的和为:" + maxsum);
}
}
值得注意的是,一开始我用mac的自带文本编辑编辑了要存放的数组,格式后缀是rtf,报错
For input string: "{\rtf1\ansi\ansicpg936\cocoartf2636"
字符编码错误
解决办法是在文本编辑里选择纯文本编辑,让后缀变为txt就可以了。
标签:返回,java,int,sum,整数,数组,import,maxsum 来源: https://www.cnblogs.com/lyf3701/p/16029888.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。