1. 程式人生 > 實用技巧 >方法過載

方法過載

基礎題目

第一題:語法練習

  • 語法點:方法定義,方法過載

  • 按步驟編寫程式碼,效果如圖所示:

  • 編寫步驟:

    1. 定義類 Test1,類中定義 main方法,定義int型別a為10, b為10.

    2. 定義printNum方法,引數為(int iVar, int iVar2),返回值無,輸出iVar和iVar2的值

    3. 定義doubling方法,引數為(int r, int p),返回值無,方法內r翻倍,p翻倍,並呼叫printNum方法,輸出r和p的值

    4. 定義doubling方法,引數為(int r),返回值int, 方法內r翻倍,返回r.

    5. main方法中,呼叫printNum方法,傳入a,b

    6. main方法中,呼叫doubling方法,傳入a,b

    7. main方法中,呼叫printNum方法,傳入a,b

    8. main方法中,呼叫doubling方法,傳入a,用a接收返回值

    9. main方法中,呼叫doubling方法,傳入b,用b接收返回值

    10. main方法中,呼叫printNum方法,傳入a,b

  • 參考答案:


     public class Test1 {
          public static void main(String[] args) {
              // 定義int型別a為10, b為10.
              int a = 10;
              int b = 10;
              printNum(a, b);
              doubling(a, b);
              printNum(a, b);
    ​
              System.out.println("***********************");
    ​
              a = doubling(a);
              b = doubling(b);
              printNum(a, b);
          }
    ​
          // 定義printNum方法,引數為(int iVar, int iVar2),返回值無,輸出iVar和iVar2的值
          public static void printNum(int iVar, int iVar2) {
              System.out.println("iVar:" + iVar + ", iVar2:" + iVar2);
          }
    ​
          // 定義doubling方法,引數為(int r, int p),返回值無,方法內r翻倍,p翻倍,並呼叫printNum方法,輸出r和p的值
          public static void doubling(int r, int p) {
              r *= 2;
              p *= 2;
              System.out.println("翻倍:r=" + r + ",p=" + p);
          }
    ​
          // 定義doubling方法,引數為(int r),返回值int, 方法內r翻倍,返回r.
          public static int doubling(int r) {
              r *= 2;
              return r;
          }
      }
    

      

第二題:語法練習

  • 語法點:方法定義,if

  • 按步驟編寫程式碼,效果如圖所示:

  • 編寫步驟:

    1. 定義類 Test2,類中定義 main方法

    2. 定義doCheck方法,引數為(int iVar),返回值boolean型別

    3. doCheck方法內,定義變數boolean flag.

    4. doCheck方法內,判斷num是否為偶數.

    5. 如果是偶數,使用for迴圈,初始化值i為0,i<=20進入迴圈,步進表示式i++

    6. 迴圈內,num-=i;

    7. flag賦值為true.

    8. 否則是奇數,使用for迴圈,初始化值i為0,i<=20進入迴圈,步進表示式i++

    9. 迴圈內,num+=i;

    10. flag賦值為false.

    11. 輸出num的值

    12. 返回flag

    13. 呼叫doCheck方法,傳入2,儲存返回值,並輸出

    14. 呼叫doCheck方法,傳入3,儲存返回值,並輸出

  • 參考答案:


      public class Test2 {
          public static void main(String[] args) {
              boolean b = doCheck(2);
              System.out.println(b);
    ​
              boolean b1 = doCheck(3);
              System.out.println(b1);
          }
    ​
          // 定義doCheck方法,引數為(int iVar),返回值boolean型別
          public static boolean  doCheck(int num){
      //        3.doCheck方法內,定義變數boolean flag.
              boolean flag  ;
    ​
      //        4.doCheck方法內,判斷num是否為偶數.
              if (num % 2== 0 ) {
                  // 如果是偶數,使用for迴圈,初始化值i為0,i<=20進入迴圈,步進表示式i++
                  for (int i = 0; i <= 20; i++) {
                      num-=i;
                  }
                  flag =  true;
              }else {
                  // 否則是奇數,使用for迴圈,初始化值i為0,i<=20進入迴圈,步進表示式i++
                  for (int i = 0; i <= 20; i++) {
                      num+=i;
                  }
                  flag =   false;
              }
              // 輸出num的值
              System.out.println("num:"+ num);
              return flag;
          }
      }

第四題:需求實現

  • 定義showColor方法,根據英文單詞,輸出對應的顏色。

  • 程式碼實現,效果如圖所示:

  • 參考答案:


      public class Test4 {
                  public static void main(String[] args) {
                      showColor("red");
                  }
                  // showColor方法中,使用switch語句,判斷顏色.
                  public static void showColor(String color) {
                      switch (color) {
                          case "red":
            
                              System.out.println(color + "是紅色!");
                              break;
                          case "blue":
            
                              System.out.println(color + "是藍色!");
                              break;
                          case "green":
            
                              System.out.println(color + "是綠色!");
                              break;
                          default:
                              System.out.println(color+" 顏色未知!");
            
                      }
            
                  }
              }
    

      

第五題:需求實現

  • 定義getValue方法,獲取三個數中的最值,能夠通過字串,指定獲取最大值或者最小值。

  • 程式碼實現,效果如圖所示:

  • 開發提示:

    • getValue中,帶有String型別引數,可以指定『大』或者『小』

    • 分別定義最大值方法,最小值方法,以供getValue呼叫。

  • 參考答案:


     public class Test5 {
          public static void main(String[] args) {
    ​
              getExtValue("小" , 5, 6, 7);
    ​
          }
          //  定義getExtValue方法,引數為(String str, int n, int n2, int n3),返回值無
          public static void getExtValue(String ext , int n1,int n2 , int n3) {
              switch (ext) {
                  // // 當str為大時,呼叫getMax方法,獲取n,n2,n3中的最大值輸出
                  case "大":
                      int max  = getMax(n1,n2,n3);
                      System.out.println("最大值為:" + max);
                      break;
                      // 當str為小時,呼叫getMin方法,獲取n,n2,n3中的最小值輸出
                  case "小":
                      int min  =  getMin(n1,n2,n3);
                      System.out.println("最小值為:" + min);
                      break;
                  default:
                      System.out.println("指令有誤!");
              }
          }
    ​
          private static int getMin(int i, int j, int k) {
              int min = i < j ? (i < k ? i : k) : (j < k ? j : k);
              return min ;
          }
    ​
          private static int getMax(int i, int j, int k) {
              int max = i > j ? (i > k ? i : k) : (j > k ? j : k);
              return  max ;
          }
      }
    

      

第六題:需求實現

  • 定義printX方法,列印任意行的圖形。

  • 程式碼實現,效果如圖所示:

  • 開發提示:

    • 參考之前的練習,將程式碼抽取為一個方法。

  • 參考答案:


     public class Test6 {
          public static void main(String[] args) {
    ​
              printX(10);
        
          }
        
          /*
        
          2.定義printX方法,引數為(int m) , 返回值無
      3.printX方法中,使用for迴圈,初始化變數x = 1,如果x<=m進入迴圈,步進表示式x++
      4.for迴圈內部,再巢狀定義一套for迴圈,初始化變數y = 1,如果y<=m進入迴圈,步進表示式y++
      5.在內迴圈內部,判斷x==y 或者 x+y==1+m ,則列印"O",否則列印"*"
           */
          public static void printX(int m) {
    ​
              for (int x = 1; x <= m; x++) {//迴圈7行
                  for (int y = 1; y <= m; y++) {//迴圈7列
                      if (x == y || x + y == m + 1) {//對角線列印O
                          System.out.print("O");
                      } else {
                          System.out.print("*");//其他位置列印.
                      }
                  }
                  System.out.println();//換行
              }
          }
      }
    ​
    

      

第七題:需求實現

  • 定義round方法,接收一位小數,實現四捨五入運算,並返回結果。

  • 程式碼實現,效果如圖所示:

      ·

  • 開發提示:

    • round方法中,引數+0.5後,轉換為int型別,並返回。

  • 參考答案:

    
    
    
    public class Test7 {
          public static void main(String[] args) {
    
                  System.out.println( 10.1 + "->"+ round(10.1));
                  System.out.println( 10.4 +"->"+ round(10.4));
                  System.out.println( 10.5 +"->"+ round(10.5));
                  System.out.println( 10.9 +"->"+ round(10.9));
          }
          // 定義round方法,引數為(double d) , 返回值int
          public static int round(double d) {
              // round方法中,d+0.5後,轉換為int型別,並返回.
              int n = (int) (d  + 0.5);
              return n;
          }
      }