黑马程序员技术交流社区
标题:
有关数组最值的问题 求指导
[打印本页]
作者:
LINUS
时间:
2013-4-11 23:57
标题:
有关数组最值的问题 求指导
本帖最后由 LINUS 于 2013-4-12 20:55 编辑
我是这样想的:既然比较数组值,那就for循环角标值比较提取到的值 然后来个判断 将最大值赋给一个变量。
打印这个变量。
但是看过毕老师视频,又构造了一个函数。
两个方法 确实是比较清晰明了,但是可以定义在一个方法内实现么?
在一个方法可以用比较简单的方式实现么?
什么时候考虑再创建一个方法呢?求指点迷津,万分感谢!
错误代码如下:
class IntDemo{
public static void main(String [] args){
int [] i = {2,7,9,1,0,4};
for(int x = 0;x<i.length;x++){
int max = 0;
if(i[x]>i[x++]){
max = i[x];
}
System.out.println(max);
}}
}
复制代码
作者:
王大斌
时间:
2013-4-12 00:04
求数组中的最值由很多种方式,
我比较常用的是Arrays.sort()
让一个数组排好序之后,去arr[0]就是最小了arr[arr.length-1]就是最大了
当然可以使用很多种函数实现,
在方法内实现当然可以
package day1;
public class Day1 {
public static void main(String [] args){
int [] i = {2,7,9,1,0,4};
int max = 0;
for(int x = 0;x<i.length-1;x++){
if(i[x]>max){
max = i[x];
}
}
System.out.println(max);
}
}
自己思考。。
作者:
林声荣
时间:
2013-4-12 00:14
一般我们代码都是将要实现的功能封装在一个方法体中,比如像上面你要求上面的数组中的最大值,一般我们就创建一个getMax(int a[])方法,当然函数名你随便写,但可读性要强哦
public void getMax(int a[]){
int max;
for(int i=0;i<a.length;i++){
if(max<a[i]){
max = a[i]
}
}
system.out.println(“数组” + a +"中的最大元素是" + max);
}
以后不管你想判断哪个数组中的最大值,直接就可以将该数组传进去就是了,如:判断数组arr中的最大元素直接调用 getMax(arr);
还有你上面的代码写的不规范,你要慢慢调整过来哦、、
作者:
通行天下
时间:
2013-4-12 00:21
class TestArray
{
public static void main(String[] args)
{
int[] arr = {2,7,9,1,0,4};
//将原数组打印出来,以便于检验得到的最值是否正确。
printArray(arr);
System.out.println("Max="+getMax(arr));
System.out.println("Min="+getMin(arr));
}
//次方法用于打印数组
public static void printArray(int[] arr)
{
System.out.print("[");
for(int x=0; x<arr.length; x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+", ");
else
System.out.println(arr[x]+"]");
}
}
//此方法用于获取数组的最小值
public static int getMin(int[] arr)
{
int min = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]<arr[min])
min = x;
}
return arr[min];
}
//此方法用于获取数组的最大值
public static int getMax(int[] arr)
{
int max = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]>arr[max])
max = x;
}
return arr[max];
}
}
我觉这样比较好,提高了程序的复用性;而且方法只有在执行时才占用内存,比较节省内存空间。
复制代码
作者:
Sword
时间:
2013-4-12 00:59
package com.itheima;
/**
* 第六题:输入一个数字组成的数组,输出该数组的最大值和最小值
*@author Sword
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Test6 {
public static void main(String[] args) throws IOException {
System.out.println("请输入一组数字(数字之间用空格隔开):");
// 创建输入流对象
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
// 读取一行信息
String input = reader.readLine();
// 以空格为分隔符,转换成数组
String[] numbers = input.split(" ");
int[] values = new int[numbers.length];
for (int j = 0; j < numbers.length; j++) {
values[j] = Integer.parseInt(numbers[j]);
}
// 回收numbers数组的资源
numbers = null;
// 获取接收到的数组里面的最大、最小数值
// 获取最大值和获取最小值分别写成了两个函数的话,就等于是多遍历了一遍这个数组,效率降低了,可扩展性增强了
System.out.printf("最大值(MAX):%d, 最大值(MIN):%d\n", getMax(values), getMin(values));
}
public static int getMax(int[] values) {
int tmp = Integer.MIN_VALUE;
if (values!=null) {
tmp = values[0];
for (int i = 0; i < values.length; i++) {
if (tmp < values[i]) {
tmp = values[i];
}
}
}
return tmp;
}
public static int getMin(int[] values) {
int tmp = Integer.MIN_VALUE;
if (values!=null) {
tmp = values[0];
for (int i = 0; i < values.length; i++) {
if (tmp > values[i]) {
tmp = values[i];
}
}
}
return tmp;
}
}
复制代码
你这个问题跟入学测试题有点类似,源码和注释已经给出,希望对你有帮助{:soso_e112:}
作者:
LINUS
时间:
2013-4-12 21:00
Sword 发表于 2013-4-12 00:59
你这个问题跟入学测试题有点类似,源码和注释已经给出,希望对你有帮助 ...
这么繁琐。
直接自定义方法 for循环 遍历数组比较角标获取的值 取出最大不就完事么?
作者:
将臣
时间:
2013-4-12 21:09
public class Test {
public static void main(String[] args) {
// 定义一个数组
int array[] = new int[] {19, 2, 3, 4, 5, 6,88 ,1};
//定义一个int属性的值来接收最大值
int maxInt = 1;
//定义一个int属性的值,来接收最小值,这里需要赋值array数组下标为0的值,直接赋值0会被判断自小的永远为0
int minInt = array[0];
//利用一个for循环,得到数组全部的值
for (int i = 0; i < array.length; i++) {
//利用Math类自带的方法max求出数组最大值
maxInt=Math.max(maxInt,array[i]);
//利用Math类自带的方法min求出数组最小值
minInt=Math.min(minInt,array[i]);
}
System.out.println("最大值是"+maxInt);
System.out.println("最小值是"+minInt);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2