黑马程序员技术交流社区
标题:
【LOOK!】数组取最值的一个小问题。
[打印本页]
作者:
1017161726
时间:
2014-11-7 21:14
标题:
【LOOK!】数组取最值的一个小问题。
大家看下这个
---------------------------------------------------------------分割线---------------------------------------------------------------------------
【【【在这里些问题了,代码内容比较多】】】
::下面的代码用了两个for语句,而且都是用arr[0]作为参考。这两个arr[0]是独立的吗。如果第一个for语句中arr[0]值改变了,会不会影响第二个?
【【【第一次问答,木有黑马币,大神们见谅!!!】】】
/*只输出数组最值*/
class zuizhi
{
public static void main(String[] args)
{
int [] arr={8,1,2,4,3,7,2,5,0,9,6};
for (int x=1;x<arr.length;x++)
{
if (arr[0]>arr[x])
{
int temp=arr[0];
arr[0]=arr[x];
arr[x]=temp;
}
}
System.out.println("max="+arr[0]);
for (int y=1;y<arr.length;y++)
{
if (arr[0]<arr[y])
{
int temp2=arr[0];
arr[0]=arr[y];
arr[y]=temp2;
}
}
System.out.println("min="+arr[0]);
}
}
作者:
yuanlingqi
时间:
2014-11-7 21:14
本帖最后由 yuanlingqi 于 2014-11-8 11:44 编辑
你这段代码的意图首先是想获取最大和最小值,你用了两个循环分别来取,而且打印还把min和max搞反了。下面来分析一下你的代码:
int [] arr={8,1,2,4,3,7,2,5,0,9,6};
//首轮遍历,你采用和首位元素对比互换的方式获得最小值,遍历完成后,数组的值已发生变化
for (int x=1;x<arr.length;x++)
{
if (arr[0]>arr[x])
{
int temp=arr[0];
arr[0]=arr[x];
arr[x]=temp;
}
}
//这里输出应该是min,下面应该是max
System.out.println("max="+arr[0]);
//次轮遍历你对同一个数组,还是采用互换的方式,得到了最大值
for (int y=1;y<arr.length;y++)
{
if (arr[0]<arr[y])
{
int temp2=arr[0];
arr[0]=arr[y];
arr[y]=temp2;
}
}
System.out.println("min="+arr[0]);
复制代码
其实获取最大,最小值只需要一轮遍历就足够了,你不需要去修改数组本身的顺序。
思路是你创建两个变量,都赋为a[0]的值,然后遍历数组和两个数相比,保存较大和较小值就可以了。
代码比较简单,我就不敲了,相信你能搞定的。
作者:
weizhang00
时间:
2014-11-7 23:07
你写的有些复杂了
int tempMax = array[0]
int tempMin = array[0]
for int i = 0; i < array.length; i++{
if temp>array[i];
temp = array[i];
if tempmax <array[i];
tempmax = array[i];
}
不明白你为什么要进行交换,但是,你交换后,第二个for循环中a[0]是执行完第一个for后的a[0];
会影响到的
作者:
adalia_0712
时间:
2014-11-8 09:48
第一个for循环语句里面的if应该是if(arr[0]<arr[x])。找出最大值。
第二个for循环语句里面的if应该是if(arr[0]>arr[y])。找出最小值。
在第一个for结束的时候arr[0]已经是数组里面最大的了。但是不妨碍第二个for循环。
望采纳。
作者:
wang415265521
时间:
2014-11-8 12:00
先把数组排序,然后取最大值和最小值打印
public class opp
{
public static void main(String[] args)
{
int [] arr={8,1,2,4,3,7,2,5,0,9,6};
sort(arr); //排序
System.out.println("最小值为"+arr[0]);
System.out.println("最大值为"+arr[arr.length-1]);
}
//选择排序:将数组按从大到小排序
public static void sort(int[] arr)
{
for (int i = 0; i < arr.length-1; i++)
{
for(int j=i+1; j< arr.length;j++)
{
if(arr[i]>arr[j])
{
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
}
复制代码
作者:
陈召
时间:
2014-11-8 13:37
学习到了很多东西。。
作者:
v咔咔
时间:
2014-11-10 08:52
要取得最大最小值还是二楼的方法好,不知道楼主是不是要将数组进行排序
作者:
迷失的小Z
时间:
2014-11-14 22:46
这取最大值和最小值怎么还把数组元素给搞乱了……
作者:
relice
时间:
2014-11-21 02:09
是因为eclipse自动生成的.class文件没有找到,我在新建工程时把classes这个文件夹没有放在WEB-INF目录下。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2