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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黎健东 中级黑马   /  2012-8-2 01:56  /  1500 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 凉宫蛋蛋 于 2012-8-2 03:43 编辑


  1. public class CopyOfCopyOfTest010_NumberTest {
  2.     public static void main(String[] args) {   
  3.         boolean alive = false;     
  4.         boolean alive2 = false;
  5.         int [] array = new int [10];
  6.         for(int i = 0; i < array.length; i++){
  7.             array[i] = i;
  8.         }

  9.         for(int i : array){
  10.             //*****************************
  11.             //想将下面方法封装成Method1         
  12.             if(i % 2 == 1){
  13.                 System.out.println("1");
  14.                 if(alive == true){
  15.                     System.out.println("true");
  16.                 }
  17.                 if(alive2 == true){
  18.                     System.out.println("true2");
  19.                 }
  20.                 alive = false;
  21.                 alive2 = false;
  22.             }
  23.             //*****************************
  24.             
  25.             //*****************************
  26.             //想将下面方法封装成Method2
  27.             if(i % 2 == 0){
  28.                 System.out.println("0");
  29.                 if(alive == false){
  30.                     System.out.println("false");
  31.                 }
  32.                 if(alive2 == false){
  33.                     System.out.println("false2");
  34.                 }
  35.                 alive = true;
  36.                 alive2 = true;
  37.             }
  38.             //*****************************
  39.         }
  40.     }

  41. }

复制代码
想把上面的代码区域分别封装成Method1,Method2
如果把alive2去掉就可以封装了,但是多了alive2之后,就封装不了了
怎么样可以实现封装多个boolean类型的方法呢?

下面这个是之封装alive的方法:

  1. public class Test4 {
  2.     public static void main(String[] args) {
  3.         boolean alive = false;
  4.         int[] array = new int[10];
  5.         for (int i = 0; i < array.length; i++) {
  6.             array[i] = i;
  7.         }

  8.         for (int i : array) {
  9.             alive = method1(alive, i);
  10.             alive = method2(alive, i);
  11.         }
  12.     }

  13.     public static boolean method2(boolean alive, int i) {
  14.         if (i % 2 == 0) {
  15.             System.out.println("0");
  16.             if (alive == false) {
  17.                 System.out.println("false");
  18.             }
  19.             alive = true;
  20.         }
  21.         return alive;
  22.     }

  23.     public static boolean method1(boolean alive, int i) {
  24.         if (i % 2 == 1) {
  25.             System.out.println("1");
  26.             if (alive == true) {
  27.                 System.out.println("true");
  28.             }
  29.             alive = false;
  30.         }
  31.         return alive;
  32.     }
  33. }
复制代码

3 个回复

倒序浏览
  1. public class CopyOfCopyOfTest010_NumberTest {
  2.         static boolean alive = false;     
  3.     static boolean alive2 = false;
  4.    
  5.         static void method1(int i)
  6.         {
  7.                 if(i % 2 == 0)
  8.                 {
  9.                         return;
  10.                 }else{
  11.                          
  12.             System.out.println("1");

  13.             if(alive == true){

  14.                 System.out.println("true");

  15.             }

  16.             if(alive2 == true){

  17.                 System.out.println("true2");

  18.             }

  19.             alive = false;

  20.             alive2 = false;

  21.         }
  22.         }
  23.         static void method2(int i)
  24.         {
  25.                 if(i % 2 == 1)
  26.                 {
  27.                         return;
  28.                 }else{
  29.                          
  30.                         System.out.println("0");
  31.                          
  32.             if(alive == false){

  33.                 System.out.println("false");

  34.             }

  35.             if(alive2 == false){

  36.                 System.out.println("false2");

  37.             }

  38.             alive = true;

  39.             alive2 = true;

  40.         
  41.         }
  42.         }

  43.     public static void main(String[] args) {   

  44.       

  45.         int [] array = new int [10];

  46.         for(int i = 0; i < array.length; i++){

  47.             array[i] = i;

  48.         }
  49.       

  50.         for(int i : array){
  51.                 method1(i);
  52.                 method2(i);

  53.             //*****************************

  54.             //想将下面方法封装成Method1         
  55. //            if(i % 2 == 1){
  56. //
  57. //                System.out.println("1");
  58. //
  59. //                if(alive == true){
  60. //
  61. //                    System.out.println("true");
  62. //
  63. //                }
  64. //
  65. //                if(alive2 == true){
  66. //
  67. //                    System.out.println("true2");
  68. //
  69. //                }
  70. //
  71. //                alive = false;
  72. //
  73. //                alive2 = false;
  74. //
  75. //            }

  76.             //*****************************

  77.             

  78.             //*****************************

  79.             //想将下面方法封装成Method2

  80. //            if(i % 2 == 0){
  81. //
  82. //                System.out.println("0");
  83. //
  84. //                if(alive == false){
  85. //
  86. //                    System.out.println("false");
  87. //
  88. //                }
  89. //
  90. //                if(alive2 == false){
  91. //
  92. //                    System.out.println("false2");
  93. //
  94. //                }
  95. //
  96. //                alive = true;
  97. //
  98. //                alive2 = true;
  99. //
  100. //            }

  101.             //*****************************

  102.         }

  103.     }


  104. }
复制代码
放到了方法里,输出结果也一样,
不过不知道想要的结果是怎么样子的封装,最好把封装好单个alive1的代码帖出来看看。
回复 使用道具 举报
周坤 发表于 2012-8-2 03:19
放到了方法里,输出结果也一样,
不过不知道想要的结果是怎么样子的封装,最好把封装好单个alive1的代码帖 ...

alive1的方法,我直接用IDE就可以自动封装了,结果如上
多了alive2就不行了,因为无法返回两个boolean
貌似楼上的方法可以,但不知道当多个boolean的时候,是否也是这样抽取出来,有没有什么规律呢
回复 使用道具 举报
楼主这个疑问其实可以简化为需要一个方法返回两个值。值1和值2。
其实可以很简单的让其返回一个数组,比如将1定为true,0为false。alive1和alive2为一个数组的两个元素

public class Text2 {
        public static void main(String[] args) {
                int[] alive = new int[]{0,0};                                //用数组表示,1表示ture,0表示false

        int[] array = new int[10];

        for (int i = 0; i < array.length; i++) {

            array = i;

        }



        for (int i : array) {

           //int alive1 = method1(alive, i);

            int alive2 = method2(alive, i)[1];                                //只改一个方法,另一个方法类似的改。

        }
        }
         public static int[] method2(int[] alive, int i) {

                 if(i % 2 == 1){

                    System.out.println("1");

                    if(alive[0] == 1){                                        //相当于源程序的alive1 ==ture,其实此处原来也不应该用alive1==ture,直接if(alive1)不是同一个意思?

                        System.out.println("true");

                    }

                    if(alive[1] ==0){                                        //相当于原来的alive2== false;

                        System.out.println("true2");

                    }

                    alive[0] = 0;                                                //相当于 原程序中的alive1=false;

                    alive[1] = 0;                                                //相当于原程序的 alive2 = false;
            }
                         return alive;                                                        //这样就能达到返回两个布尔值的效果了         }

}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马