一、设计思路
1、利用文件的读取流将文本中的数组都读取到定义的数组中;
2、在求出任意一个子数组的和,然后比较最大值,并且将其输出;
文本中的内容如下:
二、源代码
1 import java.util.*; 2 import java.io.*; 3 public class SuperMax2 4 { 5 public static void ShowArr(int arr[][],int line1,int line2,int row1,int row2) 6 { 7 for(int i=line1;i<=row1;i++) 8 { 9 for(int j=line2;j<=row2;j++) 10 { 11 System.out.print(+arr[i][j]+" "); 12 } 13 System.out.println(); 14 } 15 } 16 public static int GetSum(int arr[][],int n,int m,int k,int l) 17 { 18 int sum=0; 19 for(int f=n;f<=k;f++) 20 { 21 for(int h=m;h<=l;h++) 22 { 23 sum+=arr[f][h]; 24 } 25 } 26 return sum; 27 } 28 public static void main(String[] args) throws NumberFormatException, IOException 29 { 30 int y=0; 31 int x=0; 32 String line;//一行数据 33 34 int row1=0; 35 File file=new File("input.txt");//存放数组数据的文件 36 BufferedReader in=new BufferedReader(new FileReader(file)); 37 38 int[][] arr1 = new int[5][20];//读取出的数组 39 int[][] arr = new int[5][20];//读取出的数组 40 while((line=in.readLine())!=null) 41 { 42 String[] temp=line.split(","); 43 for(int i=0;imax) 90 { 91 max=sum; 92 line1=n; //保存第一个数的行 93 line2=k; //保存第二个数的行 94 row2=m; //保存第一个数的列 95 row3=l; //保存第二个数的列 96 } 97 } 98 } 99 }100 }101 System.out.println("最大子数组为:");102 ShowArr(arr,line1,row2,line2,row3);103 System.out.println("最大子数组的和为:"+max);104 }105 }
三、运行结果
全负数
全正数
有正有负
四、心得体会
在这次结对开发的过程中遇到了好多问题,首先是在解决文件的读取的时候,一开始时使用的是read方法,但是发现这个是行不通的,因为没有考虑逗号的问题,和返回值得类型,read读出来不是整形的,所以最后尝试使用缓冲区的方法,,每次读取一行,并且用split方法用逗号将数组分割开,并且将该数组存到指定数组,这样就成功的转换了,然后通过遍历每一个字数组,求和,并且求出最大值。这次我们两人使用的时分工合作,最后进行代码复审。终于实现了该功能。五、有图为证