实验6:环形数组求和
程序员:吕泽坤
日期:17:31:35
(一)
设计思路:
1 输入数组长度
2 输入数组
2.2进行数组变为循环数组,
for(i=length;i<2*length;i++)
{
arry[i]=arry[i-length];
}
3 进行最大值求解
3.2首先确定循环次数length
3.2.2 arry2[j]=arry[j];表为首位整数
3.2.3进行子数组(长度为length)循环次数
//当前i个元素之和大于0就接着往后加 arry2[i]=arry[i]+arry2[i-1];
)//当前i个元素之和小于0就不加,直接把下一个元素的值直接取下来
arry2[i]=arry[i];
3.2.4进行max比较确定
4输出Max
(二)
实验代码:
1 package shuzu01; 2 3 import java.util.Scanner; 4 import java.lang.*; 5 public class Test { 6 7 private static boolean flase; 8 private static Scanner in; 9 @SuppressWarnings("unused") 10 public static void main(String arg[]) 11 { 12 int i,j=0; 13 Scanner input =new Scanner(System.in); 14 System.out.println("请输入一个数组的长度"); 15 int length=input.nextInt(); 16 17 int []arry=new int[2*length]; 18 int []arry2=new int[2*length]; 19 20 System.out.println("请输入一个数组"); 21 for(i=0;i<length;i++ ) 22 { 23 24 int a=input.nextInt(); 25 isNumeric(a); 26 if(false) 27 { 28 System.out.println("请输入一个整数"); 29 int s=input.nextInt(); 30 31 arry[i]=s; 32 } 33 arry[i]=a; 34 j++; 35 } 36 //形成环形数组 37 for(i=length;i<2*length;i++) 38 { 39 arry[i]=arry[i-length]; 40 } 41 //求和最大值 42 int max=arry[0]; 43 for( j=0;j<length;j++) 44 { 45 arry2[j]=arry[j]; 46 max=Math.max(max,arry[j]); 47 for(i=j+1;i<length+j;i++) 48 { 49 if(arry2[i-1]>=0)//当前i个元素之和大于0就接着往后加 50 arry2[i]=arry[i]+arry2[i-1]; 51 if(arry2[i-1]<0)//当前i个元素之和小于0就不加,直接把下一个元素的值直接取下来 52 arry2[i]=arry[i]; 53 54 //找到最大值 55 max=Math.max(max,arry2[i]); 56 } 57 } 58 System.out.print("最大值"+max);//打印最大值 59 60 61 62 63 64 65 66 67 68 /*for(i=0;i<length;i++ ) 69 { 70 System.out.println(arry[i]); 71 }*/ 72 73 } 74 75 76 77 78 79 public static boolean isNumeric(int a) 80 { 81 if (!Character.isDigit(a)) 82 { 83 return false; 84 } 85 86 87 return true; 88 } 89 90 }
(四)总结
首先进行的是循环数组天加,其次在数组 求和是数组溢出,超过范围。
时间: 2024-11-03 01:36:20