这次课堂作业是二维数组,随机生成一个二维数组,然后求出整个二维数组中子数组和的最大值。之前的几节课都是接触的以为数组,突然接触二维数组,然后不知道该如何下手。找身边写出来的同学问了一下。其实除了一维和二维不一样,其他的都是一样的。代码如下。
package 数组; import java.util.Random; import java.util.Scanner; public class shuzu{ public static void main(String[] args) { int a[][]; int i,j,l,h,n,k,sum,max; //随机产生一个数组 Scanner scanner = new Scanner(System.in); System.out.print("输出随机产生的数组的长度:");//设置数组的长 h=scanner.nextInt(); System.out.print("输出随机产生的数组的高度:");//设置数组的高 l=scanner.nextInt(); scanner.close(); a=new int[l][h];//将设置的长和宽赋给这个数组 for(i=0;i<l;i++) { for(j=0;j<h;j++) { Random random = new Random(); a[i][j]=random.nextInt(11);//随机生成一个数赋给整个二维数组中的相对位置的值 a[i][j]=a[i][j]-1; System.out.print(a[i][j]); System.out.print(", ");//每个数字之间设置间距 } System.out.println(""); } max=0;//先设置最大值为0 for(n=0;n<l;n++) { sum=0;//先设置最大值为0 for(i=0;i<l-n;i++) { sum=0; for(j=0;j<h;j++) { for(k=i;k<=i+n;k++) { sum=sum+a[k][j]; } /*System.out.print(sum); System.out.print(" ");*/ if(sum<0) { sum=0; } if(max<sum) { max=sum; } } } } System.out.print(max); System.out.println(""); } }
运行结果如下:
在这个程序中,首先随机生成一个二维数组,然后设置生成的二维数组的长和宽。将设置的长和宽赋值给这个数组。随机生成数字,然后赋值给这个数组中相应的位置。在每个数字间设置间距。之后得出和最大的二维数组的方法和一维数组相似。