java中求数组最值方法的定义和前面为啥不一样,好心人帮忙看看
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中求数组最值方法的定义和前面为啥不一样,好心人帮忙看看相关的知识,希望对你有一定的参考价值。
三图第七行代码可以这样写吗?
public static int getMax(arr)
arr是一个变量,int()arr是一个int类型的数组,这个我知道
或
public static int getMax(int arr)
都不行。
因为这样写,调用getMax时就只能传递
一个整型变量了,不能传递一个整型数组。
正确的写法是:
1、
static int getMax(int[] arr);
或
public/*public可改成protected或private*/ static int getMax(int[] arr);
2、
int getMax(int[] arr);
或
public/*public可改成protected或 private*/ int getMax(int[] arr);
写成2的样子,就只能先创建一个类Example31的对象后,再调用getMax方法,像这样:Example31 e=new Example31();
int max=e.getMax(arr);
或int max=new Example31().getMax(arr); 参考技术A 不可以。
在Java语言中,所有的变量在使用前必须声明。
变量是内存中的一块区域,该区域具有三个属性:变量类型,即系统为其分配空间的依据;变量名,即该内存区域名称;变量值,即该区域中存放的字面常量数据。 参考技术B 第七行是一个方法逐字解释一下就是:定义一个静态的,返回值为int的,方法名为getMax的,参数为int类型的名字是arr的一个方法。简单的一个冒泡查询最大值的方法。
你的这个写法参数类型没有定义,所以是错误的。 参考技术C 方法 public 可以省了 static 修饰 主要是调用方便 不然的new 返回值类型 int getMax()方法名 int[] arr 变量类型 变量名 没毛病啊追问
可不可以写成static int getMax(int arr);
方法名(参数类型 变量)
参考技术D 不可以,你这个只有变量名,连类型都没有,编译都过不去。java 基础知识-数组的7种算法(排序求和最值遍历...)
遍历
遍历就是把这个数组的每个元素 显示出来 遍历的方法就是先定义这个数组的大小,然后用FOR循环来完成数组,例如
double[] score = new double[5]; Scanner input = new Scanner(System.in); for (int i = 0; i < score.length; i++) { System.out.println("请输入第" + (i + 1) + "位同学的成绩:"); score[i] = input.nextDouble(); } for (int i = 0; i < 5; i++) { System.out.println(score[i]); }
这个就是一个double 型的数组用for去遍历每个元素 而结束条件就是这个数组的最后一个数组 score.length就可以遍历这个数组了
求和
求和就是在遍历的基础上添加一个求和的计数器 就在在for外面定义一个和的变量 这个变量的初始值是0
这样就能达到求和的结果是正确的
求和的公式在for循环里面写这样的目的是因为求和也是在循环的往上加的过程
例如
double sum = 0; int i; for (i = 0; i < score.length; i++) { sum = sum + score[i]; } System.out.println(score.length + "位同学的成绩是" + sum);
这个就是求和的过程 其他的运算方法就是把这个符号更改下而已
极值
极值的目的就是求一个极端的值
方法就是假定数组里面的一个数据是最大的然后用其他的数据遍历他与他进行对比 如果新的数据值比这个定义的值大的话那么就替换他的这个位置然后继续遍历 遍历结束后就输出这个值就是最大的值或者最小的值 例如
double max = score[0]; for (i = 0; i < score.length; i++) { if (score[i] > max) { //这里的大于号变成小于号就可以求最小值了 max = score[i]; } } System.out.println(i + "位同学的最高成绩是" + max);
这个代码就是求一个极值而且是最大的内个
查找
这个功能就是查询当前的数组是否有你需要的值 就好像你去一个地方去找人是一个意思
查找用到了boolean变量 因为这个功能的目的就是找到与没找到 换句话来说就是 找到了就是真(或假) 没找到就是假(或真)
for循环里面写的if判断
判断方法就是当用户输入的值与数组中的某一个值是一样的那么就输出 否则(else)就没找到 输出不输出随便你
还要判断下用boolean就可以做到 如果是真那么就跳出这个循环并且进入下一个循环 因为boolean在跳出的时候变化成真了 那么在下面的if里面就是以真的形式出现并且输出
例如
boolean flag = false; System.out.println("请输入您要查找的分数:"); double findScore = input.nextDouble(); for (i = 0; i < score.length; i++) { if (score[i] == findScore) { flag = true;//变真了 break;//跳出这个for循环进入下面的if循环 } } if (flag) {//由于是上面的boolean变成真了 所以就进入这个if 如果没找到就跳刀下面的else System.out.println("找到了您所要查找的分数。" + score[i]); } else { System.out.println("没有找到您所要查找的分数。"); }
倒置
倒置的意思就是最后一个元素变成第一个元素第一个元素变成最后一个
过程就是折中取半
不遍历整个数组了遍历一半,那么就/2就可以 但是计算机数数的方法是从0开始的也就是说最后一个值里面是没有任何意义的 所以要在最后一个值那-1
并且还要定义一个空的变量 因为要用到三步换值(变量) 不定义也可以
例如
for (i = 0; i < score.length / 2; i++) { double temp = score[i]; //这里是空变量赋值 三步赋值第一步 score[i] = score[score.length - 1 - i];//右边的值赋到左边那么右边就变成空的值 score[score.length - 1 - i] = temp;//同上 但是这个temp是个临时的值所以他最后是空的没有 } for (i = 0; i < score.length; i++) { System.out.println(score[i]); }
排序
排序是引用的JAVA自带的一个类 所以没有难度 例如
插入
插入的意思就是在这个数组中某一个地方插入一个变量(值)
但是一旦插入的这个变量进去那么就会对这个数组产生变化所以数组一定要空出多余的地方
并且要对插入进来的 数据进行判断,判断结束后还要跳出这个判断的if,
判断的条件就是:输入进来的值大于数组里的某一个值并且小于这个值前面的那一个值(num[i]-1) 替换这个值跳出 进入下一个循环
例如
int[] num = new int[6]; for (i = 0; i < num.length; i++) { num[i] = input.nextInt(); } Arrays.sort(num); System.out.println("输入您要插入的数:"); int insert = input.nextInt(); for (i = 0; i < num.length; i++) { if ((insert > num[i]) && (insert < num[i - 1])) { num[i] = insert; break; } } for (i = 0; i < num.length; i++) { System.out.println(num[i]); }
以上是关于java中求数组最值方法的定义和前面为啥不一样,好心人帮忙看看的主要内容,如果未能解决你的问题,请参考以下文章
C语言如何求一个二维数组有几行,还有为啥会提示gets()是一个未定义的标识符?
Java中求字符串String和数组Array的长度(length)