定义一个整型数组,求出数组中元素的和,最大值及最小值。(java编写)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定义一个整型数组,求出数组中元素的和,最大值及最小值。(java编写)相关的知识,希望对你有一定的参考价值。

public class F04
public static void main(String[] args)
int Arr[]=1,3,4,56,77,88,33,23,21;
int max=0;
int min=0;
int sum=0;
for(int i=1;i<Arr.length;i++)
sum+=Arr[i];
for(int j=0;j<Arr.length;j++)
if(Arr[i]>Arr[j])
max=Arr[i];
if(Arr[i]<Arr[j])
min=Arr[i];



System.out.println("数组中最大值为:"+max);
System.out.println("数组中最小值为:"+min);
System.out.println("数组中元素的和为:"+sum);


可是输出结果是:数组中最大值为:21
数组中最小值为:21
数组中元素的和为:305
想知道这个程序哪个地方不对?请教……谢谢~!

public static void main(String[] args)

int Arr[] =
1, 3, 4, 56, 77, 88, 33, 23, 21 ;
int max = 0;
int min = 0;
int sum = 0;
for (int i = 0; i < Arr.length; i++)

sum += Arr[i];
for (int j = 0; j < Arr.length; j++)

if (Arr[i] > Arr[j] && max < Arr[j]) //这里需要判断一下 如果比当前最大值大 就更改当前最大的值

max = Arr[i];

if (min == 0)//由于之前最小值是0 所以先需要改变一下

min = Arr[i];
if (Arr[i] < Arr[j] && min > Arr[j])

min = Arr[i];

else

if (Arr[i] < Arr[j] && min > Arr[j])

min = Arr[i];




System.out.println("数组中最大值为:" + max);
System.out.println("数组中最小值为:" + min);
System.out.println("数组中元素的和为:" + sum);


在你代码上改了下。..楼上的也说了 你的判断不够完整
所以执行的时候稍微有点问题 还有你的最外层的循环需要从0开始。数组的第一个是从0开始的
否则会少循环一个数
参考技术A 应该是这吧?
if(Arr[i]>Arr[j])
应该同目前的最大值比较才对.
if(Arr[i]>max)
又或者max取(max,Arr[i],Arr[j])三个中的最大值,而不是仅仅Arr[i],Arr[j].

最小值应该也是这样.
以上没有考虑效能问题.本回答被提问者和网友采纳

子数组返回一个整数数组中最大的和

本次实验的要求:

1要求程序必须能处理1000个程序;

2每个元素是int32类型的,出现子数组之和大于整型表示的最大范围会是什么情况;

3输入一个整形数组,数组里有正数也有负数。

4数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

5求所有子数组的和的最大值。要求时间复杂度为O(o)。

设计思路:

将数组的大小定义为1000,每个元素定义为int32类型,取数值时对数成2的32次方,这样数值可以越界。

程序代码

 
 #include <iostream>
  #include<stdlib.h>
  #include<time.h>
  using namespace std;
  
  int main()
  {
     int i;
     int a[1000];
     int max = 0;
     int b = 0;
 
     srand(time(NULL));
     cout<<"数组为:"<<endl;
     for (i = 0; i<1000; i++)
    {
         a[i] = rand()*4294967296;
     }
   for (i = 0; i<1000; i++)
   {
       cout << a[i] << ‘ ‘;
    }
    cout << endl;
 
   for (i = 0; i < 1000; i++)
    {
       b += a[i];
        if (b < 0)
            b = 0;
        if (b > max)
            max = b;
    }
     if (max == 0)
    {
         max = a[0];
        for (i = 0; i < 1000; i++)
        {
             if (max < a[i])
           {
                 max = a[i];
             }
         }    
     }
     cout <<"最大子数组为:"<< max << endl;
     system("pause");
     return 0;
 }
运行结果
1有溢出时
技术分享图片

2出结果时

技术分享图片

实验总结

   通过运行调试,了解了时间复杂度的重要性,当程序有溢出时,运行结果会都变成0,而且运行时一定要记得先把符号成对的打出来,要不然很容易检查不出错误代码。

小组成员图片

技术分享图片

 

 

 

 

 

 

 

 














































以上是关于定义一个整型数组,求出数组中元素的和,最大值及最小值。(java编写)的主要内容,如果未能解决你的问题,请参考以下文章

返回一个整数数组最大子数组的和

返回一个整数数组最大子数组的和

在 JavaScript 中,如何求出两个数组的交集和差集?

Java基础练习题

编程求出一个一维int型数组的元素最大值、最小值、平均值和所有元素之和

返回一个整数数组中最大子数组的和