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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 200米王朝 中级黑马   /  2014-5-12 16:31  /  2064 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class maxMin {
    public static class Result{
            private int max;
            private int min;
            public Result(int max, int min){
                    this.max = max;
                    this.min = min;
            }
        public int getMax(){
                return max;
        }
        public int getMin(){
                return min;
        }
  }
        public static Result getResult(int[] array){
                int max = Integer.MIN_VALUE;
                int min = Integer.MAX_VALUE;
                for(int i:array){
                        if(i>max){
                                max = i;
                        }
                        if(i<min){
                                min = i;
                        }
                }
                return new Result(max,min);
        }
}

class Text{
        public static void main(String[] args){
                int[] array = new int[5];
                for(int i=0; i<array.length; i++){
                        array = (int)(Math.random()*50);
                }
                for(int j=0; j<array.length; j++){
                        System.out.println(array[j]);
                }
                System.out.println(maxMin.getResult(array).getMax());
                System.out.println(maxMin.getResult(array).getMin());
        }       
       
}


请各位赐教,为何我运行的结果一直显示100,而不是随机5个数的最大、最小数。

11 个回复

正序浏览
  1. class maxMin {
  2.     public static class Result{
  3.         private int max;
  4.         private int min;
  5.         public Result(int max, int min){
  6.                 this.max = max;
  7.                 this.min = min;
  8.         }
  9.     public int getMax(){
  10.             return max;
  11.     }
  12.     public int getMin(){
  13.             return min;
  14.     }
  15. }
  16.     public static Result getResult(int[] array){
  17.             int max = Integer.MIN_VALUE;
  18.             int min = Integer.MAX_VALUE;
  19.             for(int i:array){
  20.                     if(i>max){
  21.                             max = i;
  22.                     }
  23.                     if(i<min){
  24.                             min = i;
  25.                     }
  26.             }
  27.             return new Result(max,min);
  28.     }
  29. }

  30. class Text{
  31.     public static void main(String[] args){
  32.             int[] array = new int[5];
  33.             for(int i=0; i<array.length; i++){
  34.                     array[i] = (int)(Math.random()*50);
  35.             }
  36.             for(int j=0; j<array.length; j++){
  37.                     System.out.println(array[j]);
  38.             }
  39.             System.out.println(maxMin.getResult(array).getMax());
  40.             System.out.println(maxMin.getResult(array).getMin());
  41.     }        
  42.    
  43. }
复制代码



我只改了你知道的 array [ i ] = (int)(Math.random()*50);这句的错误,程序可以正确按照你的要求运行啊。你在查找下其他的问题吧,代码应该是没问题的。
回复 使用道具 举报
200米王朝 发表于 2014-5-12 17:41
看了您的代码,我的问题出在 漏了这句: import java.util.Arrays;

不是 System.out.println(Arrays.toString(array));是这一句 输出数组的
回复 使用道具 举报
array = (int)(Math.random()*50);错了 !! 你想想看,array是什么?这是一个数组,这个数组的容量是5。Math.random()*50是一个随机数,你把一个数字赋值给看一个数组,而且还是赋值五次。这个一点逻辑都没有。
应该是把每一个随机数赋值给数组的指定脚标位置,所以应该改成 array[i]=(int)(Math.random()*50);
回复 使用道具 举报
看了您的代码,我的问题出在 漏了这句: import java.util.Arrays;



再多问下  import java.util.Arrays 是针对下面的吧


                int max = Integer.MIN_VALUE;
                int min = Integer.MAX_VALUE;
回复 使用道具 举报
200米王朝 发表于 2014-5-12 17:28
除了这个问题外,找不到问题在哪。

最后2句 也没运行。
  1. package com.hbb;

  2. import java.util.Arrays;

  3. public class GetMaxAndMin {

  4.         /**
  5.          * 取出一个随机数组中的最大数和最小数
  6.          * @param args
  7.          */
  8.         public static void main(String[] args) {
  9.                 // TODO Auto-generated method stub
  10.                 int[] array = new int[5];
  11.         for(int i=0; i<array.length; i++){
  12.                 array[i] = (int)(Math.random()*50);
  13.         }
  14. //        for(int j=0; j<array.length; j++){
  15. //                System.out.println(array[j]);
  16. //        }
  17.         System.out.println(Arrays.toString(array));
  18.         System.out.println(maxMin.getResult(array).getMax());
  19.         System.out.println(maxMin.getResult(array).getMin());
  20.         }

  21. }

  22. class maxMin {
  23.     public static class Result{
  24.             private int max;
  25.             private int min;
  26.             public Result(int max, int min){
  27.                     this.max = max;
  28.                     this.min = min;
  29.             }
  30.         public int getMax(){
  31.                 return max;
  32.         }
  33.         public int getMin(){
  34.                 return min;
  35.         }
  36.   }
  37.         public static Result getResult(int[] array){
  38.                 int max = Integer.MIN_VALUE;
  39.                 int min = Integer.MAX_VALUE;
  40.                 for(int i:array){
  41.                         if(i>max){
  42.                                 max = i;
  43.                         }
  44.                         if(i<min){
  45.                                 min = i;
  46.                         }
  47.                 }
  48.                 return new Result(max,min);
  49.         }
  50. }
复制代码


我这里可以运行,其中一次运行结果
[45, 24, 8, 8, 43]
45
8
回复 使用道具 举报
200米王朝 发表于 2014-5-12 17:25
是array 后面跟中括号i吧  我程序有写 但是复制到论坛上就没有了

除了这个问题外,找不到问题在哪。

最后2句 也没运行。

请提示
回复 使用道具 举报
247033993@qq.co 发表于 2014-5-12 17:22
你还是改错了,你应该是给每一个数组元素赋值,这么说你想想哪里错了

是array 后面跟中括号i吧  我程序有写 但是复制到论坛上就没有了

回复 使用道具 举报
200米王朝 发表于 2014-5-12 17:18
我新手 找不到哪里出问题了,请赐教!

你还是改错了,你应该是给每一个数组元素赋值,这么说你想想哪里错了
回复 使用道具 举报
本帖最后由 200米王朝 于 2014-5-12 17:22 编辑
array 后面有中括号i 但是论坛这里不显示


我新手 找不到哪里出问题了,请赐教!

回复 使用道具 举报
本帖最后由 200米王朝 于 2014-5-12 17:20 编辑
247033993@qq.co 发表于 2014-5-12 16:54
array = (int)(Math.random()*50); 这句都写错了好吗,改过来就可以了


array = (int)(50*Math.random());

我改成了这样

但是运行结果 只显示 100.

  System.out.println(maxMin.getResult(array).getMax());
                System.out.println(maxMin.getResult(array).getMin());

回复 使用道具 举报
array = (int)(Math.random()*50); 这句都写错了好吗,改过来就可以了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马