软件工程作业06

 

                                                      实验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 }


(四)总结

     首先进行的是循环数组天加,其次在数组 求和是数组溢出,超过范围。斌进行数字的判断,提示输入错误。

     团队照片:

原文地址:https://www.cnblogs.com/gdp176119/p/5379344.html