返回数组个数Java_用java实现返回一个整数数组中最大数组的和
今天研究了一下如何返回一个整数数组中最大数组的和,具体要求如下:
分析:
对于这个问题可以设定一个整型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实现返回一个整数数组中最大数组的和相关推荐
- java,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
标题:java,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 一.示例 二.题解 方法一,暴力法:使用双重for循环,每 ...
- 用Java语言定义一个整数定义的数组,求奇数个数和偶数个数。
##[Java] 定义一个整数定义的数组,求奇数个数和偶数个数. /*作者:龙蝶 *日期:2020年4月4日 */public clsss Array{public static void main( ...
- np.random.randint 与 np.random.rand区别 前者返回为参数指定的范围区间的一个整数后者返回的为一个概率
np.random.randint 与 np.random.rand区别 前者返回为参数指定的范围区间的一个整数后者返回的为一个概率 import numpy as np num_lstm = np ...
- java实现判断一个整数是奇数还是偶数(Scanner运用,if判断运用,%求余运用)
java实现判断一个整数是奇数还是偶数(Scanner运用,if判断运用,%求余运用) 代码: package com.liangrui;import java.util.Scanner;/*** 功 ...
- 最小的k个数 java_【Java】 剑指offer(40) 最小的k个数
本文参考自<剑指offer>一书,代码采用Java语言. 题目 输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 思 ...
- 天天酷跑java_利用Java怎么实现一个天天酷跑游戏
利用Java怎么实现一个天天酷跑游戏 发布时间:2020-12-15 17:25:03 来源:亿速云 阅读:102 作者:Leah 利用Java怎么实现一个天天酷跑游戏?很多新手对此不是很清楚,为了帮 ...
- leetcode:java.T018_4Sum---给定一个整数数组,找出a + b + c + d = target的唯一解,不能有重复元素组
<span style="color:#ff4635">敬请关注博客,后期不断更新优质博文,谢谢</span> package leetcode.T018_ ...
- java数组怎样插入元素,Java如何在给定位置将元素插入数组?
众所周知,Java中的数组是固定大小的对象,一旦创建,数组的大小就无法更改.因此,如果您希望有一个可调整大小的类似数组的对象,可以在给定位置插入元素,则可以使用java.util.List对象类型. ...
- C语言-数组和指针-11(已有一个排号序的数组,要求输入一个数后,按原来的排序规律将它插入数组中)
题目: 已有一个排号序的数组,要求输入一个数后,按原来的排序规律将它插入数组中 源代码: #include <stdio.h> #define ROW 7 int main(){int a ...
最新文章
- android:persistent (非系统app失效)
- Solaris10下Nagios安装
- when I enter ZSOCIAL role FM RH_STRUC_GET to get organization units that a given user belongs to
- 漫话:为什么计算机用补码存储数据?
- matlab将矩阵分解成lu,10行代码实现矩阵的LU分解(matlab)
- 所有的shadow map的名称
- PRM–endRequest事件
- 字符(串)转换ASCII码
- QQ音乐下载qmc0/3批量转MP3工具
- ES slop问题纪录
- 联发科MT5580芯片处理器参数介绍
- Pygame游戏编程
- IDEA:Lambda expression are not supported at language level ‘5‘
- 根据地址获取HTTP返回的状态码
- php常见后门,php后门隐藏技巧大全
- 一本关于Symbian入门的电子图书,中文版
- sql2000安装成功但是服务器显示为空,安装sql2000时出现“安装程序配置服务器失败”...
- JAVA面试100道必考题
- Renishaw精密测针2021(山涧果子)
- java doc字数_JAVA 仿 MS word 字数统计