zoukankan      html  css  js  c++  java
  • 数组求和(2)

    (1)代码:

      1 import java.util.Random;
      2 
      3 
      4 public class max {
      5 
      6     public static void main(String[] args) {
      7         // TODO Auto-generated method stub
      8         int n=1000;
      9         int C[]=new int[n];
     10         int D[]=new int[n];
     11         int a=0;
     12         int MAX=0;
     13         int b=0;
     14         long MAX1=0;
     15         long b1=0;
     16         double MAX2=0;
     17         double b2=0;
     18         int MAX3=0;
     19         int b3=0;
     20         int m1=2147483600;
     21         int m2=2147483647;
     22         Random rand=new Random();
     23         //随机产生数组C[N]
     24         for(int i=0;i<n;i++)
     25         {
     26             a=rand.nextInt(2);
     27             if(a==0)
     28             {
     29                C[i]=(int) (m1+Math.random()*( m2-m1+1));
     30             }
     31             else
     32             {
     33                C[i]=-(int) (m1+Math.random()*(m2-m1+1));
     34             }
     35         }
     36         //随机产生数组D[N]
     37         for(int i=0;i<n;i++)
     38         {
     39             a=rand.nextInt(2);
     40             if(a==0)
     41             {
     42                D[i]=(int) (Math.random()*(100));
     43             }
     44             else
     45             {
     46                D[i]=-(int) (Math.random()*(100));
     47             }
     48         }
     49         //计算int32 型溢出时的结果 
     50         b=C[0];
     51         MAX=b;
     52         for(int i=1;i<n;i++)
     53         {
     54             if(b<0)
     55             {
     56                 b=C[i];
     57                 if(MAX<b)
     58                 {
     59                    MAX=b;
     60                 }
     61             }
     62             else
     63             {
     64                 if(C[i]<=0)
     65                 {
     66                     if(MAX<b)
     67                     {
     68                         MAX=b;
     69                     }
     70                     b=b+C[i];
     71                 }
     72                 else
     73                 { 
     74                     b=b+C[i];
     75                     if(MAX<b)
     76                     {
     77                         MAX=b;
     78                     }
     79                 }
     80                 
     81             }
     82         }
     83         //通过转化成double型计算
     84         b2=C[0];
     85         MAX2=b2;
     86         for(int i=1;i<n;i++)
     87         {
     88             if(b2<0)
     89             {
     90                 b2=C[i];
     91                 if(MAX2<b2)
     92                 {
     93                    MAX2=b2;
     94                 }
     95             }
     96             else
     97             {
     98                 if(C[i]<=0)
     99                 {
    100                     if(MAX2<b2)
    101                     {
    102                         MAX2=b2;
    103                     }
    104                     b2=b2+C[i];
    105                 }
    106                 else
    107                 { 
    108                     b2=b2+C[i];
    109                     if(MAX2<b2)
    110                     {
    111                         MAX2=b2;
    112                     }
    113                 }
    114                 
    115             }
    116         }
    117         //通过转化成long型计算
    118         b1=Long.valueOf(C[0]);
    119         MAX1=b1;
    120         for(int i=1;i<n;i++)
    121         {
    122             if(b1<0)
    123             {
    124                 b1=Long.valueOf(C[i]);
    125                 if(MAX1<b1)
    126                 {
    127                    MAX1=b1;
    128                 }
    129             }
    130             else
    131             {
    132                 if(C[i]<=0)
    133                 {
    134                     if(MAX1<b1)
    135                     {
    136                         MAX1=b1;
    137                     }
    138                     b1=b1+Long.valueOf(C[i]);
    139                 }
    140                 else
    141                 { 
    142                     b1=b1+Long.valueOf(C[i]);
    143                     if(MAX1<b1)
    144                     {
    145                         MAX1=b1;
    146                     }
    147                 }
    148                 
    149             }
    150         }
    151         //普通的程序处理1000个元素的结果
    152         b3=D[0];
    153         MAX3=b3;
    154         for(int i=1;i<n;i++)
    155         {
    156             if(b3<0)
    157             {
    158                 b3=D[i];
    159                 if(MAX3<b3)
    160                 {
    161                    MAX3=b3;
    162                 }
    163             }
    164             else
    165             {
    166                 if(D[i]<=0)
    167                 {
    168                     if(MAX3<b3)
    169                     {
    170                         MAX3=b3;
    171                     }
    172                     b3=b3+D[i];
    173                 }
    174                 else
    175                 { 
    176                     b3=b3+D[i];
    177                     if(MAX3<b3)
    178                     {
    179                         MAX3=b3;
    180                     }
    181                 }
    182                 
    183             }
    184         }
    185         
    186         System.out.println("测试int31型 数组为:");
    187         for(int i=0;i<n;i++)
    188         {
    189             System.out.print(C[i]+" ");
    190             if((i+1)%100==0)
    191             {
    192                 System.out.println();
    193             }
    194         }
    195         
    196         System.out.println("测试程序处理1000个元素 的数组为:");
    197         for(int i=0;i<n;i++)
    198         {
    199             System.out.print(D[i]+" ");
    200             if((i+1)%100==0)
    201             {
    202                 System.out.println();
    203             }
    204         }
    205         
    206         System.out.println();
    207         
    208         System.out.println("数组元素为1000个,100以内随机取数:");
    209         System.out.println("最大数组和为:"+MAX3);
    210         System.out.println();
    211         
    212         System.out.println("int32 类型溢出测试:");
    213         System.out.println("溢出显示的结果,最大数组和为:"+MAX);
    214         System.out.println("解决以后的结果,最大数组和为:(1)求最大子数组和时用double型:"+MAX2);
    215         System.out.println("                    (2)求最大子数组和时用long型:"+MAX1);
    216         
    217         
    218     }
    219     
    220 }

    (2)截图:

    (3)总结:

    团队开发可以使解决问题的的方法更多,在本次开发中如果仅用int32,超出范围时显示的结果是int32范围的最大值。

    解决:利用long型,或double型增大数值范围

    (4)团队:

  • 相关阅读:
    GyPSii API PHP应用初探
    无缝滚动图片的一个简单封装
    Linux设置固定IP
    DIV卷帘效果示例
    vsftp安装配置
    PHP判断FORM来的数据是否为整数
    Linux下设置apache开机启动
    从Discuz提取的数据库和模板操作文件,很容易使用哦
    discuz 表情的提取
    IE6、IE7浮动层被下面的动挡住的问题
  • 原文地址:https://www.cnblogs.com/1305yyf/p/4384453.html
Copyright © 2011-2022 走看看