類和麪向對象

1 關於方法的返回值和return語句,下面說法錯誤的是:

A. return 語句用於終止當前方法的執行html

B. 若是方法的返回類型爲void,則方法中不能出現return語句java

C. return 關鍵字還會中止方法的執行;若是方法的返回類型爲 void,則可以使用沒有值的 return 語句來中止方法的執行編程

D. 定義有返回值的方法,必須使用 return 關鍵字返回值,且 return 關鍵字的後面必須是與返回類型匹配的值數組

參考答案數據結構

B 選項的說法錯誤。ide

這是由於,若是方法有返回值,則必須使用 return 關鍵字向調用方返回值;若是方法所定義的返回類型爲 void,則不須要使用 return 關鍵字來返回數據,可是,可使用 沒有值的 return 語句來中止方法的執行。測試

2 請描述類和對象的關係

參考答案this

對象是一個客觀存在的實體,是面向對象編程過程當中分析與解決問題的出發點與基礎。對象的實質就是內存中的一塊數據存儲區域,其數據結構由定義它的類來決定。url

類是用於構建對象的模板,對象經過類的實例化產生,一個類能夠建立多個對象,每一個對象擁有本身的數據和行爲。spa

3 請描述引用類型和基本類型的區別

參考答案

除8種基本類型以外,用類名(接口、數組)聲明的變量稱爲引用類型變量,簡稱「引用」。引用的功能在於訪問對象。

基本類型變量自己就包含了其實例數據,而引用類型變量中存儲的是某個對象在內存中的地址信息。當一個引用類型變量指向該類的對象時,就能夠經過這個變量訪問對象。

4 爲 Cell 類添加右移的方法

本案例須要實現格子的右移功能,即須要爲 Cell類定義右移的方法。該方法須要使用重載來分別實現兩種功能:

功能1:調用右移方法,不須要傳入任何參數,則格子向右移動一列,如圖-1上中間的圖形所示;

功能2:調用右移方法,並傳入須要移動的列數,則格子將向右移動相應的列數,如圖-1上右邊的圖形所示。

圖-1

本案例首先須要打印出遊戲所在的平面(寬10格,高20格),用「-」號表示平面上的每一個單元;而後假設某格子的座標爲(15,3),即,行號爲15,列號爲3,須要使用「*」號打印顯示該格子,如圖-1中左圖中的藍色圈內所示。先調用不帶參數的右移方法,則格子右移一列,如圖-1上中間圖形上藍色圈內所示;而後調用帶參數的右移方法使得格子向右移動 4 列,並從新打印效果,如圖-1中右圖上藍色圈內所示。

參考答案

爲實現格子右移,須要爲Cell類定義 moveRight 方法。該方法不接收參數,則右移一列,代碼以下所示:

  1.     public void moveRight() {
  2.         col++;
  3.     }

該方法也能夠接收一個 int 類型的參數,表示向右移動的列數,而後在該方法中,將格子的列數增長相應的數值。代碼以下所示:

 
  1.     public void moveRight(int d) {
  2.         col += d;
  3.     }

實現此案例須要按照以下步驟進行。

步驟一:爲 Cell 類定義 moveRight 方法

在Cell 類中,添加方法 moveRight,實現右移一列。代碼以下所示:

 
  1. public class Cell {
  2.     int row;
  3.     int col;
  4. //右移一列
  5.     public void moveRight() {
  6.         col++;
  7.     }
  8. }

步驟二:爲 Cell 類定義重載的 moveRight 方法

在Cell 類中,重載moveRight方法,定義帶有參數的 moveRight 方法,實現右移多列的功能。代碼以下所示:

 
  1. public class Cell {
  2.     int row;
  3.     int col;
  4. //右移一列
  5.     public void moveRight() {
  6.         col++;
  7.     }
  8. //重載的 moveRight方法:右移多列
  9.     public void moveRight(int d) {
  10.         col += d;
  11.     }
  12. }

步驟三:測試 moveRight 方法

在CellGame 類的main 方法中添加代碼:先建立一個位置爲(15,3)的格子,並打印顯示;而後調用cell 對象的 moveRight方法,實現格子右移一列,並打印顯示;再調用一次 moveRight 方法,實現格子右移多列,並打印顯示。代碼以下所示:

 
  1. public class CellGame{
  2.     public static void main(String[] args) {
  3.         System.out.println("----------繪製Cell----------");
  4.         Cell cell1 = new Cell(15,3);        
  5.         printCell(cell1);
  6.         System.out.println("----------右移 1 列----------");
  7.         cell1.moveRight();
  8.         printCell(cell1);
  9.         System.out.println("----------右移 4 列----------");
  10.         cell1.moveRight(4);
  11.         printCell(cell1);
  12.     }
  13.     public static void printCell(Cell cell) {
  14.         int totalRow = 20;
  15.         int totalCol = 10;
  16.         //打印場地
  17.         for (int row = 0; row < totalRow; row++) {
  18.             for (int col = 0; col < totalCol; col++) {
  19.                 if (cell.row == row && cell.col == col) {
  20.                     //打印指定的格子
  21.                     System.out.print("* ");
  22.                 } else {
  23.                     System.out.print("- ");
  24.                 }
  25.             }
  26.             System.out.println();
  27.         }
  28.     }
  29. }

本案例中,類Cell 的完整代碼以下所示:

 
  1. public class Cell {
  2.     int row;
  3.     int col;
  4. //右移一列
  5.     public void moveRight() {
  6.         col++;
  7.     }
  8. //重載的 moveRight方法:右移多列
  9.     public void moveRight(int d) {
  10.         col += d;
  11.     }
  12. //其餘方法...
  13. }

類CellGame的完整代碼以下所示:

 
  1. import java.util.Scanner;
  2. public class CellGame{
  3.     public static void main(String[] args) {
  4.         System.out.println("----------繪製Cell----------");
  5.         Cell cell1 = new Cell(15,3);        
  6.         printCell(cell1);
  7.         System.out.println("----------右移 1 列----------");
  8.         cell1.moveRight();
  9.         printCell(cell1);
  10.         System.out.println("----------右移 4 列----------");
  11.         cell1.moveRight(4);
  12.         printCell(cell1);
  13.     }
  14.     public static void printCell(Cell cell) {
  15.         int totalRow = 20;
  16.         int totalCol = 10;
  17.         //打印場地
  18.         for (int row = 0; row < totalRow; row++) {
  19.             for (int col = 0; col < totalCol; col++) {
  20.                 if (cell.row == row && cell.col == col) {
  21.                     //打印指定的格子
  22.                     System.out.print("* ");
  23.                 } else {
  24.                     System.out.print("- ");
  25.                 }
  26.             }
  27.             System.out.println();
  28.         }
  29.     }
  30. }

5 完成CellGame(提升題,選做)

本案例要求完成 CellGame,用戶能夠在控制檯上操做格子的下落、左移和右移。

遊戲剛開始,將在界面上顯示一個格子,界面效果如圖-2上左圖中的藍色圈內所示,用戶能夠在控制檯選擇輸入各類操做:1表示下落一行,2表示左移一列,3表示右移一列,0表示退出。若是用戶錄入1,則格子下落一行,並從新打印顯示,界面效果如圖-2上右圖中的藍色圈內所示:

圖-2

若是用戶錄入2,則格子左移一列,並從新打印顯示,界面效果如圖-3上左圖中藍色圈內所示;若是用戶錄入3,則格子右移一列,並從新打印顯示,界面如圖-3上右圖中藍色圈內所示:

圖-3

若是用戶錄入0,則遊戲結束,界面效果如圖-4所示:

圖-4

參考答案

前面的案例中,已經實現了格子的下落、左移和右移的功能,此案例中,只須要實現遊戲的主要規則便可。

實現此案例須要按照以下步驟進行。

步驟一:定義類及 main 方法

首先定義一個名爲 CellGame的類,並在類中定義Java 應用程序的入口方法main ,代碼以下所示:

 
  1. public class CellGame {
  2.     public static void main(String[] args) {
  3.     }
  4. }

步驟二:初始化 Cell並打印

在 main 方法中添加代碼,建立一個位置爲(3,3)的格子,並打印顯示。代碼以下所示:

  1. public class CellGame {
  2.     public static void main(String[] args) {
  3.         //建立格子並打印
  4.         Cell cell1 = new Cell(3,3);        
  5.         printCell(cell1);
  6.     }
  7. }

步驟三:輸入

在main方法中,實例化Scanner類,並調用Scanner類的nextInt()方法接收用戶從控制檯輸入的表示操做的數值。代碼以下所示:

 
  1. import java.util.Scanner;
  2. public class CellGame {
  3.     public static void main(String[] args) {
  4.         //建立格子並打印
  5.         Cell cell1 = new Cell(3,3);        
  6.         printCell(cell1);
  7.         //遊戲控制
  8.         System.out.println("1 —— 下落,2——向左,3——向右,0 —— 退出");
  9.         Scanner sc = new Scanner(System.in);
  10.         int cmd = sc.nextInt();
  11.     }
  12. }

注意:此步驟中,須要導入java.util包下的Scanner類。

步驟四:判斷輸入

判斷用戶的輸入,以實現格子的下落、左移或者右移。直到用戶錄入0,則表示遊戲結束。代碼以下所示:

 
  1. import java.util.Scanner;
  2. public class CellGame {
  3.     public static void main(String[] args) {
  4.         //建立格子並打印
  5.         Cell cell1 = new Cell(3,3);        
  6.         printCell(cell1);
  7.         //遊戲控制
  8.         System.out.println("1 —— 下落,2——向左,3——向右,0 —— 退出");
  9.         Scanner sc = new Scanner(System.in);
  10.         int cmd = sc.nextInt();
  11.         while (cmd != 0) {
  12.             switch(cmd) {                
  13.                 case 1:
  14.                     cell1.drop();
  15.                     break;
  16.                 case 2:
  17.                     cell1.moveLeft();
  18.                     break;
  19.                 case 3:
  20.                     cell1.moveRight();
  21.                     break;
  22.             }            
  23.             printCell(cell1);
  24.             System.out.println("1 —— 下落,2——向左,3——向右,0 —— 退出");
  25.             cmd = sc.nextInt();
  26.         }
  27.         System.out.println("遊戲結束");
  28.         sc.close();
  29.     }
  30. }

注意:使用完畢後,關閉 Scanner 對象。

本案例中,類Cell 的完整代碼以下所示:

 
  1. public class Cell {
  2.     int row;
  3.     int col;
  4.     public Cell(int row, int col) {
  5.         this.row = row;
  6.         this.col = col;
  7.     }
  8.     public Cell() {
  9.         this(0, 0);
  10.     }
  11.     
  12.     public Cell(Cell cell) {
  13.         this(cell.row, cell.col);
  14.     }
  15.     public void drop() {
  16.         row++;
  17.     }
  18.     
  19.     public void moveLeft(int d) {
  20.         col -= d;
  21.     }
  22.     
  23.     public String getCellInfo() {
  24.         return row + "," + col;
  25.     }
  26.     
  27.     public void moveRight(int d) {
  28.         col += d;
  29.     }
  30.     public void drop(int d) {
  31.         row += d;
  32.     }
  33.     public void moveLeft() {
  34.         col--;
  35.     }
  36.     public void moveRight() {
  37.         col++;
  38.     }
  39. }
 

類CellGame的完整代碼以下所示:

 
  1. import java.util.Scanner;
  2. public class CellGame {
  3.     public static void main(String[] args) {
  4.         //建立格子並打印
  5.         Cell cell1 = new Cell(3,3);        
  6.         printCell(cell1);
  7.         
  8.         //遊戲控制
  9.         System.out.println("1 —— 下落,2——向左,3——向右,0 —— 退出");
  10.         Scanner sc = new Scanner(System.in);
  11.         int cmd = sc.nextInt();
  12.         while (cmd != 0) {
  13.             switch(cmd) {                
  14.                 case 1:
  15.                     cell1.drop();
  16.                     break;
  17.                 case 2:
  18.                     cell1.moveLeft();
  19.                     break;
  20.                 case 3:
  21.                     cell1.moveRight();
  22.                     break;
  23.             }            
  24.             printCell(cell1);
  25.             System.out.println("1 —— 下落,2——向左,3——向右,0 —— 退出");
  26.             cmd = sc.nextInt();
  27.         }
  28.         System.out.println("遊戲結束");
  29.         sc.close();
  30.     }
  31.     public static void printCell(Cell cell) {
  32.         int totalRow = 20;
  33.         int totalCol = 10;
  34.         //打印格子的位置
  35.         System.out.println("Cell的位置爲:(" + cell.getCellInfo() + ")");
  36.         for (int row = 0; row < totalRow; row++) {
  37.             for (int col = 0; col < totalCol; col++) {
  38.                 if (cell.row == row && cell.col == col) {
  39.                     System.out.print("* ");
  40.                 } else {
  41.                     System.out.print("- ");
  42.                 }
  43.             }
  44.             System.out.println();
  45.         }
  46.     }
  47. }
相關文章
相關標籤/搜索