今天研究了一下如何返回一个整数数组中最大数组的和,具体要求如下:

分析:

对于这个问题可以设定一个整型max,让他来充当子数组的和的最大值,之后就需要让他和所有的子数组进行比较,这里可以用两个for循环来实现.如下:

for(int i=0;i

{

for(int j=i;j

{

s[z]=s[z]+f[j];

if(max

max=s[z];

}

}

实现这一部之后,问题便已经解决了一半,接下来便要考虑一下如何生成这个整形数组了.这里可以用随机函数来实现,但要求既有证书,又有负数,所以从网上找到了

一个简单的生成正负随机数的函数.

private static intRD(){

Random random= newRandom();int n = random.nextInt(10);if(n==1||n==3||n==5||n==7||n==9){//如果是13579进入负数生产机器

String str= "-"+random.nextInt(100);//加个负号

int a = Integer.parseInt(str);//把字符串str封装成实数a

returna;

}else{//否则产生正数,也就是说02468产生正数

int a = random.nextInt(100);returna;

}

}

以上两个难点解决了,剩下的问题就变得简单了.

源代码如下:

package piao;

import java.util.Random;

public class text {

public static void main(String[] args) {

// TODO 自动生成的方法存根

Random random = new Random();

int n = random.nextInt(100);

int f[]=new int[n];

for(int i=0;i

{

f[i]=RD();

System.out.println(f[i]);

}

/*

* int n=5;

int f[]=new int[n];

f[0]=1;f[1]=3;f[2]=-5;f[3]=2;f[4]=-2;

*/

int num=n;

int s[]=new int[num];

for(int i=0;i

{

s[i]=0;

}

int z=0;

int max=f[0];

for(int i=0;i

{

for(int j=i;j

{

s[z]=s[z]+f[j];

if(max

max=s[z];

}

/*for(int j=n-i, m=0;j

{

s[z]=s[z]+f[m];

if(max

max=s[z];

}

s[z]=max;

z++;

*/

}

System.out.println("最大为:"+max);

}

private static int RD(){

Random random = new Random();

int n = random.nextInt(10);

if(n==1||n==3||n==5||n==7||n==9){

//如果是13579进入负数生产机器

String str = "-"+random.nextInt(100);//加个负号

int a = Integer.parseInt(str);//把字符串str封装成实数a

return a;

}else{

//否则产生正数,也就是说02468产生正数

int a = random.nextInt(100);

return a;

}

}

}

使用定值数组[1,3,-5,2,-2]测试结果:

运行结果:

拓展1.若给出的为一个首尾相接的整数环,如何修改?

环与线之间唯一的区别在于在max的比较时要考虑子数组的变化,在尾部后还可以连接到首部,

因此需要将源式修改为:

for(int i=0;i

{for(int j=i;j

{

s[z]=s[z]+f[j];if(max

max=s[z];

}for(int j=n-i, m=0;j

{

s[z]=s[z]+f[m];if(max

max=s[z];

}

s[z]=max;

z++;

}

使用定值数组[1,3,-5,-2,2]测试结果:

运行结果:

拓展二:

实现在文件中输入:

首先在绝对路径下新建一个a.txt,如图:

原代码:

package piao;

import java.io.FileReader;

import java.io.IOException;

import java.util.Random;

public class text {

public static void main(String[] args)throws IOException {

// TODO 自动生成的方法存根

//初始化

FileReader fr=new FileReader("a.txt");

//int read()一次只读一个字符,输出字符需要将其转换为char类型。

int h=fr.read();

int f[]=new int[5];

int n=5;

System.out.print((char)h);

String v[]=new String[5];

for(int i=0;i<5;i++)

v[i]="";

v[0]=""+(char)h;

int x=0;

//当fr.read()输出值为-1时,所有字符都输出完毕。

while((h=fr.read())!=-1)

{

System.out.print((char)h);

if((char)h==',')

{

x++;

}else

v[x]=v[x]+(char)h;

}

for(int i=0;i<5;i++)

f[i]=Integer.parseInt(v[i]);

/*Random random = new Random();

int n = random.nextInt(100);

int f[]=new int[n];

for(int i=0;i

{

f[i]=RD();

//System.out.println(f[i]);

}

/*int n=5;

int f[]=new int[n];

f[0]=1;f[1]=3;f[2]=-5;f[3]=-2;f[4]=2;

*/

int num=n;

int s[]=new int[num];

for(int i=0;i

{

s[i]=0;

}

int z=0;

int max=f[0];

for(int i=0;i

{

for(int j=i;j

{

s[z]=s[z]+f[j];

if(max

max=s[z];

}

for(int j=n-i, m=0;j

{

s[z]=s[z]+f[m];

if(max

max=s[z];

}

s[z]=max;

z++;

}

System.out.println("最大为:"+max);

fr.close();

}

private static int RD(){

Random random = new Random();

int n = random.nextInt(10);

if(n==1||n==3||n==5||n==7||n==9){

//如果是13579进入负数生产机器

String str = "-"+random.nextInt(100);//加个负号

int a = Integer.parseInt(str);//把字符串str封装成实数a

return a;

}else{

//否则产生正数,也就是说02468产生正数

int a = random.nextInt(100);

return a;

}

}

}

结果截图:

拓展三:考虑数组很大以及程序崩溃的情况.

将输入由int改为String,进行处理.若数据输入有问题则用判断加异常抛出跳过对数据的处理直接

退出.

返回数组个数Java_用java实现返回一个整数数组中最大数组的和相关推荐

  1. java,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    标题:java,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 一.示例 二.题解 方法一,暴力法:使用双重for循环,每 ...

  2. 用Java语言定义一个整数定义的数组,求奇数个数和偶数个数。

    ##[Java] 定义一个整数定义的数组,求奇数个数和偶数个数. /*作者:龙蝶 *日期:2020年4月4日 */public clsss Array{public static void main( ...

  3. np.random.randint 与 np.random.rand区别 前者返回为参数指定的范围区间的一个整数后者返回的为一个概率

    np.random.randint  与 np.random.rand区别 前者返回为参数指定的范围区间的一个整数后者返回的为一个概率 import numpy as np num_lstm = np ...

  4. java实现判断一个整数是奇数还是偶数(Scanner运用,if判断运用,%求余运用)

    java实现判断一个整数是奇数还是偶数(Scanner运用,if判断运用,%求余运用) 代码: package com.liangrui;import java.util.Scanner;/*** 功 ...

  5. 最小的k个数 java_【Java】 剑指offer(40) 最小的k个数

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 思 ...

  6. 天天酷跑java_利用Java怎么实现一个天天酷跑游戏

    利用Java怎么实现一个天天酷跑游戏 发布时间:2020-12-15 17:25:03 来源:亿速云 阅读:102 作者:Leah 利用Java怎么实现一个天天酷跑游戏?很多新手对此不是很清楚,为了帮 ...

  7. leetcode:java.T018_4Sum---给定一个整数数组,找出a + b + c + d = target的唯一解,不能有重复元素组

    <span style="color:#ff4635">敬请关注博客,后期不断更新优质博文,谢谢</span> package leetcode.T018_ ...

  8. java数组怎样插入元素,Java如何在给定位置将元素插入数组?

    众所周知,Java中的数组是固定大小的对象,一旦创建,数组的大小就无法更改.因此,如果您希望有一个可调整大小的类似数组的对象,可以在给定位置插入元素,则可以使用java.util.List对象类型. ...

  9. C语言-数组和指针-11(已有一个排号序的数组,要求输入一个数后,按原来的排序规律将它插入数组中)

    题目: 已有一个排号序的数组,要求输入一个数后,按原来的排序规律将它插入数组中 源代码: #include <stdio.h> #define ROW 7 int main(){int a ...

最新文章

  1. android:persistent (非系统app失效)
  2. Solaris10下Nagios安装
  3. when I enter ZSOCIAL role FM RH_STRUC_GET to get organization units that a given user belongs to
  4. 漫话:为什么计算机用补码存储数据?
  5. matlab将矩阵分解成lu,10行代码实现矩阵的LU分解(matlab)
  6. 所有的shadow map的名称
  7. PRM–endRequest事件
  8. 字符(串)转换ASCII码
  9. QQ音乐下载qmc0/3批量转MP3工具
  10. ES slop问题纪录
  11. 联发科MT5580芯片处理器参数介绍
  12. Pygame游戏编程
  13. IDEA:Lambda expression are not supported at language level ‘5‘
  14. 根据地址获取HTTP返回的状态码
  15. php常见后门,php后门隐藏技巧大全
  16. 一本关于Symbian入门的电子图书,中文版
  17. sql2000安装成功但是服务器显示为空,安装sql2000时出现“安装程序配置服务器失败”...
  18. JAVA面试100道必考题
  19. Renishaw精密测针2021(山涧果子)
  20. java doc字数_JAVA 仿 MS word 字数统计

热门文章

  1. JAVA统计字母、数字个数
  2. mac node版本管理
  3. MY_SQLCode
  4. JDBC第一篇之获得数据库连接
  5. 大家都纷纷指出了 wp7 的优点 …
  6. SAP 开发陷阱一箩筐(01)——创建了函数组却无法激活
  7. 策略模式(Strategy Pattern)
  8. linux c gcc编译报错 can not be used when making a shared object; recompile with -fPIC
  9. linux shell awk 单引号分割
  10. golang 解析html