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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邱成 中级黑马   /  2012-7-31 12:51  /  1504 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package homework;
import java.util.*;
public class homework1 {
int [] nums=new int[10];
int max;
int min;
public void maxMin(int [] nums){
int max=nums[0];
int min=nums[0];
for(int i=0;i<nu***ength;i++){
nums[i]=((int)Math.random()*1000);
System.out.println(nums[i]);
if(nums[i]>max){
max=nums[i];
}else if(nums[i]<min){
min=nums[i];
}
}
System.out.print("最大值是:"+max);
System.out.print("最小值是:"+min);
}
}

------------------------------------------------------------------
package homework; public class Testhomework1 { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
homework1 hw=new homework1();
hw.maxMin(nums);
}
}


调用方法里的 hw.maxMin(nums); 中nums为什么无法解析!?

5 个回复

倒序浏览
分析了下代码,小问题挺多的,我已经改好了,具体的细节看代码中的注释
  1. package test4;

  2. public class Test4 {

  3.         int[] nums = new int[10];
  4.         int max;
  5.         int min;

  6.         public void maxMin(int[] nums) {
  7.                 // int 型的数组元素初始值是0,你后面又在循环中对其元素赋值,这里的赋值其实无意义了,只是为了编译通过
  8.                 int max = 0;
  9.                 int min = 0;
  10.                 for (int i = 0; i < nums.length; i++) {
  11.                         // 你之前的写法导致每次的随机数都一样,要先算出随机数,最后再强转
  12.                         nums[i] = ((int) (Math.random() * 1000 + 1));
  13.                         System.out.println(nums[i]);

  14.                         if (i == 0) {
  15.                                 // 要放到这里
  16.                                 max = nums[0];
  17.                                 min = nums[0];
  18.                         }

  19.                         if (nums[i] > max) {
  20.                                 max = nums[i];
  21.                         }

  22.                         // 还有这里,求最大和最小值是两个部分,分开判断,不能用else if将两个部分连起来,那样就错了
  23.                         if (nums[i] < min) {
  24.                                 min = nums[i];
  25.                         }
  26.                 }
  27.                 System.out.print("最大值是:" + max);
  28.                 System.out.print("最小值是:" + min);
  29.         }

  30.         public static void main(String[] args) {
  31.                 Test4 t = new Test4();
  32.                 t.maxMin(t.nums);
  33.         }
  34. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 李东升 于 2012-7-31 14:31 编辑

你代码最大的我错误在于生成随机数代码的(int)放错位置,这样给int数组赋值失败。而且,你传入的是一个空数组,那么数组所有的值都是0,那么最后最小是也就是0,不管你数组里面有没有0.至于if else的判断没错。
说说你写这个方法的作用,这个作用是什么呢?传递一个数组进去,输出最大值和最小值?那你为什么要在方法内部才给数组赋值,还有一个方法要尽量简单,单一。最好的办法是传入一个有值的数组,然后返回一个最大值一个最小值,但是这样必须返回一个数组。而且,方法里面尽量不要输出语句。
  1. public int[] maxMin(int [] nums){
  2.         int max=nums[0];
  3.         int min=nums[0];
  4.         for(int i=0;i<nums.length;i++){
  5.         System.out.println(nums[i]);
  6.         if(nums[i]>max){
  7.         max=nums[i];
  8.         }else if(nums[i]<min){
  9.         min=nums[i];
  10.         }
  11.         }
  12.         System.out.print("最大值是:"+max);
  13.         System.out.println("最小值是:"+min);//这里的三个输出语句最好去掉,这里是为了对比输出结果是否正确。
  14.                                                                                 //也可以在main方法中遍历输出数组
  15.         return new int[]{max,min};
  16.         }
  17.         public static void main(String[] args) {
  18.                
  19.                 int [] nums=new int[10];
  20.                 for(int i=0;i<nums.length;i++){
  21.                         nums[i]=(int)(Math.random()*1000);}
  22.                 Lt l=new Lt();
  23.                 int[] a=l.maxMin(nums);
  24.                 System.out.println(a[0]+"  "+a[1]);
  25.         }
复制代码
回复 使用道具 举报
希望对你有帮助。。。

QQ截图20120731143858.jpg (70.34 KB, 下载次数: 33)

QQ截图20120731143858.jpg
回复 使用道具 举报
public static void main(String[] args) {
// TODO Auto-generated method stub
homework1 hw=new homework1();
hw.maxMin(nums);
}
,你这里给maxMin方法传的参数nums在主类中没有定义,也不是全局变量,看来你应用的是类homework1中的变量,所以这里的参数,应该写成maxMin(hw.nums);
回复 使用道具 举报
public class MaxAndMin
{
        public static void main(String[] args)
        {
                int[] arr = new int[10];
                for(int i = 0; i < arr.length; i++)
                {
                        arr[i] = (int)(Math.random() * 1000);
                        System.out.print(arr[i]+" ");       
                }
                getMaxAndMin(arr);       
        }
        public static void getMaxAndMin(int[] arr)
        {
                int max = arr[0];
                int min = arr[0];
                for(int i = 1; i < arr.length; i++)
                {
                        if(arr[i] > max)
                        {
                                max =        arr[i];
                        }
                        if(arr[i] < min)
                        {
                                min = arr[i];       
                        }       
                }
               
                System.out.println("max="+max+" ,min="+min);
        }       
}
//希望能帮到你吧,个人写了个,应该和你的一样,你可以对着找找看你的错误在哪了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马