A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 BlueWing 于 2015-9-4 11:05 编辑
  1. class ArrayMaxMinBlue
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr = new int[]{1,5,243,23,2424,241,111,231111};
  6.                 arrmax(arr);
  7.                 arrmin(arr);
  8.         }
  9.         
  10.         public static void arrmax(int[] arr)
  11.         {
  12.                 for(int x=0;x<arr.length;x++)
  13.                 {
  14.                         if(arr[0]<arr[x])
  15.                                 arr[0]=arr[x];
  16.                 }
  17.                 System.out.println("ArrayMax="+arr[0]);
  18.         }
  19.         public static void arrmin(int[] arr)
  20.         {
  21.                 for(int x=0;x<arr.length;x++)
  22.                 {
  23.                         if(arr[0]>arr[x])
  24.                                 arr[0]=arr[x];
  25.                 }
  26.                 System.out.println("ArrayMin="+arr[0]);
  27.         }
  28. }
复制代码

如上代码,为何最小值打印出来为5?

11 个回复

倒序浏览
这样比较对吗?不加个临时变量来交换,这样都覆盖了
回复 使用道具 举报
ln0491 发表于 2015-9-4 10:37
这样比较对吗?不加个临时变量来交换,这样都覆盖了

懂了 谢谢哈
比较最大值的时候arr[0]已经变了 数组中已经没有1了
回复 使用道具 举报
因为你没有1了 你把arrmax(arr);注释掉你就懂了
回复 使用道具 举报
洋葱头头 发表于 2015-9-4 10:42
因为你没有1了 你把arrmax(arr);注释掉你就懂了

嗯 是啊 刚接触写代码 有很多东西注意不到  修改了程序 特意加了数组的显示
  1. class ArrayMaxMinBlue
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] arr = new int[]{1,5,243,23,2424,241,111,231111};
  6.                 arrmax(arr);
  7.                 printarr(arr);
  8.                 arrmin(arr);
  9.                 printarr(arr);
  10.         }
  11.        
  12.         public static void arrmax(int[] arr)
  13.         {
  14.                 int max=0;
  15.                 for(int x=0;x<arr.length;x++)
  16.                 {
  17.                         if(max<arr[x])
  18.                                 max=arr[x];
  19.                 }
  20.                 System.out.println("ArrayMax="+max);
  21.         }
  22.        
  23.         public static void arrmin(int[] arr)
  24.         {
  25.                 int min=0;
  26.                 for(int x=0;x<arr.length;x++)
  27.                 {
  28.                         if(min>arr[x])
  29.                                 min=arr[x];
  30.                 }
  31.                 System.out.println("ArrayMin="+min);
  32.         }
  33.        
  34.         public static void printarr(int[] arr)
  35.         {
  36.                 System.out.print("{");
  37.                 for(int x=0;x<arr.length;x++)
  38.                 {
  39.                         if(x!=arr.length-1)
  40.                                 System.out.print(arr[x]+", ");
  41.                         else
  42.                                 System.out.println("}");
  43.                 }
  44.         }
  45. }
复制代码
回复 使用道具 举报
本帖最后由 BlueWing 于 2015-9-4 11:06 编辑
BlueWing 发表于 2015-9-4 10:56
嗯 是啊 刚接触写代码 有很多东西注意不到  修改了程序 特意加了数组的显示
...

  • 初始化临时变量  应该赋值数组中的元素。
  • 42行应该写 System.out.println(arr[x]+"}");
回复 使用道具 举报
你不该大小都用arr[0]来表示
回复 使用道具 举报
本帖最后由 yuzhouyichen 于 2015-9-4 11:23 编辑

打印程序老师为什么不这么写?
C:\Users\Administrator\Desktop
回复 使用道具 举报
本帖最后由 BlueWing 于 2015-9-4 11:25 编辑
yuzhouyichen 发表于 2015-9-4 11:18
打印程序老师为什么不这么写?

那你的第8行 就报错了 x是for循环的内部变量
我的打印数组的函数写的也有问题,正确的加大括号的应该这么写
  1.         public static void printarr(int[] arr)
  2.         {
  3.                 System.out.print("{");
  4.                 for(in  t x=0;x<arr.length;x++)
  5.                 {
  6.                         if(x!=arr.length-1)
  7.                                 System.out.print(arr[x]+", ");
  8.                         else
  9.                                 System.out.println(arr[x]+"}");
  10.                 }
  11.         }
复制代码

回复 使用道具 举报
BlueWing 发表于 2015-9-4 11:24
那你的第8行 就报错了 x是for循环的内部变量
我的打印数组的函数写的也有问题,正确的加大括号的应该这么 ...

哦  我打错了,应该把第八行arr[x]去掉  这样也可以吧?
回复 使用道具 举报
本帖最后由 BlueWing 于 2015-9-4 11:39 编辑
yuzhouyichen 发表于 2015-9-4 11:35
哦  我打错了,应该把第八行arr[x]去掉  这样也可以吧?

可以。
但是 你的数组 打印出来会是 {3,6,123,1,}这样子 最后多一个逗号
而且 如果有多行打印,这个函数打印以后是不做换行的。
回复 使用道具 举报
BlueWing 发表于 2015-9-4 11:37
可以。
但是 你的数组 打印出来会是 {3,6,123,1,}这样子 最后多一个逗号
而且 如果有多行打印,这个 ...

哦  多个逗点确实是个问题,不过你说的换行也可以解决
public static void printarr(int[] arr)
        {
                        System.out.print("{");
                        for(int x=0;x<arr.length;x++)
                        {                       
                                System.out.print(arr[x]+", ");
                        }
                        System.out.print(arr[x]+"} ");     
                        System.out.println();
                }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马