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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小草君 中级黑马   /  2014-5-29 08:32  /  2100 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//需求寻找4个数中最大值
/*
分析:要寻找4个数中最大值,需要用到比较运算符,所以用if语句


*/
class IfTest{
        public static void main(String[] args) {
                int x = 10;
                int y = 111;
                int z = 100;
                int a = 12;
                if(x > y) {
                        if(x > z){
                                if(x > a){
                                        System.out.println("x="+x);
                                }
                                else{
                                        System.out.println("a="+a);
                                }
                       
                       
                        }
                        else{
                                if(z > a){
                                        System.out.println("z="+z);
                                }
                                else{
                                        System.out.println("a="+a);
                                }
                       
                        }
               
                }
                else{
                        if(y > z){
                                if(y > a){
                                        System.out.println("y="+y);
                                }
                                else{
                                        System.out.println("a="+a);
                                }
                       
                       
                        }
                        else{
                                if(z > a){
                                        System.out.println("z="+z);
                                }
                                else{
                                        System.out.println("a="+a);
                                }
                       
                        }
               
               
                }
       
       
       
        }

}

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

12 个回复

倒序浏览
本帖最后由 e10my 于 2014-5-29 11:48 编辑

@author e10my
class  If
{
        public static void main(String[] args)
        {                        int x = 10;
                int y = 111;
                int z = 100;
                int a = 12;
                        
                                int[] array = {x,y,z,a}; //楼主可以在输入数据的时候就存放在数组中
                                        int max = array[0];
                                for(int i = 0;i<4;i++) //打印所有数据
                                        System.out.println(array);   //这里应该是 array【i】  不知道为何,我写上去之后自己就把【i】去掉了
                                
                                for(int i = 0 ; i < array.length ; i++){ //array.length 取数组长度
                                        if(array>max)
                                                max = array;

                                }
                                
               
                System.out.println("max="+max);
        }
}


回复 使用道具 举报
class IfTest{         public static void main(String[] args) {              
   int x = 10;        
     int y = 111;      
      int z = 100;        
     int a = 12;                  
        int result = (x>y?x:y)>(z>a?z:a)?(x>y?x:y):(z>a?z:a);         
    System.out.println(result);         }  }

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 “:(”竟然被改成了表情,哈哈.

查看全部评分

回复 使用道具 举报
class IfTest{
        public static void main(String[] args) {
                int x = 10;
            int y = 111;
            int z = 100;
            int a = 12;
            
            int result = (x>y?x:y)>(z>a?z:a)?(x>y?x:y):(z>a?z:a);
            System.out.println(result);
        }

}
回复 使用道具 举报
唉,其实java早就把这些求值问题考虑到了,所以我们拿来主义,两三行代码搞定:【仅供参考】
  1. import java.util.*;
  2. public class GetMax
  3. {
  4.         public static void main(String[]args)
  5.         {
  6.                 int intArr[] = {8,4,5,1};
  7.                 Arrays.sort(intArr);
  8.                 System.out.println("最大值为:"+intArr[intArr.length-1]);
  9.         }
  10. }
复制代码



回复 使用道具 举报
  1. class IfTest
  2. {
  3.         public static void main(String [] args)
  4.         {
  5.                 int [] a = {1,8,11,9};


  6.                 System.out.println("max = " + getMax(a));

  7.         }

  8.         public static int getMax(int [] arr)
  9.         {
  10.                 int max = 0;
  11.                 for(int i = 1; i < arr.length; i++)
  12.                 {
  13.                         max = (arr[max] < arr[i]) ? i : max;
  14.                 }
  15.                 return arr[max];
  16.         }
  17. }
复制代码


简单不代表简洁。。简单应该是简洁+易理解。
回复 使用道具 举报
wyy666 中级黑马 2014-5-29 12:47:20
7#

public class Test {
         public static void main(String args[]){
            getMax(10,111,100,12);


        }
              static void getMax(int...args){                 //可变参数,
                    int max=args[0];
                    for(int i=1;i<args.length;i++){
                               if(args[i]>max)
                                     max=args[i]; }   
                                                                     
                 System.out.println( args);;      
                   

        }   

}

回复 使用道具 举报
波涛 发表于 2014-5-29 12:14
唉,其实java早就把这些求值问题考虑到了,所以我们拿来主义,两三行代码搞定:【仅供参考】

效率不高噢。
回复 使用道具 举报
波涛 中级黑马 2014-5-29 13:25:46
9#
本帖最后由 波涛 于 2014-5-29 13:27 编辑

大神可以给解答一下有关Arrays效率问题么?
另外还可以这样的,我们利用冒泡的思路来思考也很简单吧,冒一次泡,将最大值冒出,代码如下:
  1. public class GetMax
  2. {
  3.         public static void main(String[]args)
  4.         {
  5.            int intArr[] = {3,4,5,8,5,10,9};       //待排数组,可自定义个数
  6.            BubbleSort bs = new BubbleSort();
  7.            bs.sort(intArr);
  8.            System.out.println("最大数为:"+intArr[intArr.length-1]);
  9.         }
  10. }

  11. class BubbleSort //简化的冒泡,仅冒一次泡,将最大值"冒出"
  12. {
  13.    public int[] sort(int [] arr)
  14.   {
  15.         int temp;//中间变量,做交换用的"篮子"
  16.                   for(int j=0; j<arr.length-1; j++)
  17.                   {
  18.                      if(arr[j]>arr[j+1])
  19.                          {
  20.                              temp = arr[j+1];
  21.                                  arr[j+1] = arr[j];
  22.                                  arr[j] = temp;
  23.                          }
  24.                   }
  25.                 return arr;
  26.   }
  27. }
复制代码



回复 使用道具 举报
波涛 发表于 2014-5-29 13:25
大神可以给解答一下有关Arrays效率问题么?
另外还可以这样的,我们利用冒泡的思路来思考也很简单吧,冒一 ...

首先~~我不是大神。。:L
然后,我说的效率不高,不是指你用sort()效率不高,而是指在这个需求里面的效率不高,因为这里的需求仅仅是要求输出N个数中的最大值,而你是先把值作了排序然后再输出,这里效率的差距就很明显了。

其次,你的貌似不是冒泡法,你的sort方法里面最终仅仅是把数组中最大的值排到了最后的位置,还差一套循环才会成为冒泡法。
回复 使用道具 举报
本帖最后由 波涛 于 2014-5-29 16:53 编辑
Alan_Kwan 发表于 2014-5-29 16:20
首先~~我不是大神。。
然后,我说的效率不高,不是指你用sort()效率不高,而是指在这个需求里面的效率 ...

嗯,对的,那不是冒泡,因为只要最大值,所以没必要走完全部冒泡流程,冒一次就够了;故意把外层循环去掉了,姑且称作简化版本"冒泡”吧,只是为了好理解就这么叫了!
回复 使用道具 举报
波涛 发表于 2014-5-29 16:52
嗯,对的,那不是冒泡,因为只要最大值,所以没必要走完全部冒泡流程,冒一次就够了;故意把外层循环去掉 ...

如果只要最大值用你的那个sort也有效率问题,如果仅仅是要最大值,那没必要找到最大值的过程中做那么多次数据交换。
回复 使用道具 举报
Alan_Kwan 发表于 2014-5-29 16:56
如果只要最大值用你的那个sort也有效率问题,如果仅仅是要最大值,那没必要找到最大值的过程中做那么多次 ...

额~ 我没有考虑效率的问题,确实没必要做交换,哦,那就算了,别看我的了,用你们的吧。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马