黑马程序员技术交流社区
标题:
1在int 数组中的问题。被最大值替换了(以解决)
[打印本页]
作者:
邓斌
时间:
2012-4-9 20:38
标题:
1在int 数组中的问题。被最大值替换了(以解决)
本帖最后由 邓斌 于 2012-4-9 21:16 编辑
这段代码输出结果
[7,5,2,3,7,6]
[2,3,5,6,7,7]
就因为前面多调用了一个最大数的方法。
吧1变成了最大值。
而如果把 int[]arr={1,5,2,3,7,6};改成int[]arr={8,5,2,3,7,6}; 1改成其他一些数都没问题。没被替换。
class Zda
{
public static void main(String[] args)
{
int[]arr={1,5,2,3,7,6};
max(arr);
print(arr);
paixu(arr);
print(arr);
}
public static int max(int[] arr)
{
int sum=0;
for (int x=1;x<arr.length ;x++ )
{
if (arr[sum]<arr[x])
{
arr[sum]=arr[x];
}
}
return arr[sum];
}
public static void paixu(int[]arr)
{
for (int x=0;x<arr.length-1 ;x++ )
{
for (int y=x+1;y<arr.length ;y++ )
{
if(arr[x]>arr[y])
{
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void print(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]+"]");
}
}
}
复制代码
了解了。。求最值。这样定义把角标为0的元素赋为最大值了。有BUG。
谢谢楼下的朋友。不回复了。
作者:
龚振 龚振 龚振
时间:
2012-4-9 21:06
因为你第27行return arr[sum];返回的是该数组的最大值,
int[]arr={1,5,2,3,7,6};调用该方法后你的数组变成了{7,5,2,3,7,6}
改成int[]arr={8,5,2,3,7,6}; 因为8是最大值,返回后数组不变,不会有问题。
如果你运行结果是想得出最大值和排序数组
求最值需要改下
public static int max(int[] arr)
{
int sum = arr[0];
for(int x=1; x<arr.length; x++)
{
if(sum<arr[x])
sum = arr[x];
}
return sum;
}
作者:
曾晓文
时间:
2012-4-9 21:11
public static int max(int[] arr)
{
int sum=0;
for (int x=1;x<arr.length ;x++ )
{
if (arr[sum]<arr[x])
{
arr[sum]=arr[x];//
这里把数组元素arr[arr]赋成了arr[x]的值,按你的要求,这里应该保存最大值在数组中的角标:sum=arr
}
}
return arr[sum];
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2