2015-10-18 84 views
-3

我試圖編寫一個包含兩個類的Java程序:Dog和一個驅動程序類Kennel。編寫一個包含兩個類的java程序

狗包含以下信息:

  • 一個整數的年齡。
  • 字符串名稱。如果給定名稱包含非字母字符,則初始化爲Wolfy。
  • 一個字符串樹皮,代表狗在說話時發出的發聲。
  • 代表頭髮長度的布爾值;真指示短髮。
  • 代表狗體重的浮子重量(磅)。
  • 代表尾部類型的枚舉(LONG,SHORT,NONE)。

狗有以下方法:

  • 默認構造函數。
  • 將名稱作爲參數的構造函數。
  • 方法private boolean validName(String)返回true/false給定名稱是否包含非字母字符。
  • humanAge計算並返回狗的年齡「人類年。」
  • 說出返回犬吠......

我有麻煩試圖找出如何做的方法爲validName。任何人都可以將我指向正確的方向嗎?我是否也採用同樣的方式說話?代碼附在下面。

package lab101; 


public class Dog 
{ 
    public enum TailType 
    { 
     LONG, SHORT, NONE 
    }  

    private int age; 
    private float weight; 
    private String name; 
    private String bark; 
    private boolean hairLength; 
    private TailType tail; 

    //Default Constructor--> initializes an object (called once)every constructor 
    //must initialize all the classes attributes!! 
    public Dog() 
    { 
     age = 0; 
     weight = 0; 
     name = ""; 
     bark = ""; 
     hairLength = false; 
     tail = TailType.NONE; 
    } 

    //Overloaded constructor (must have an argument) 
    public Dog(String theName) 
    { 
     age = 0; 
     weight = 0; 
     name = theName; 
     bark = ""; 
     hairLength = false; 
     tail = TailType.NONE; 
    } 

    //If the name contains non-alphabetic characters 
    private boolean validName(String str) 
    { 
     str = str.toLowerCase(); 

     if (str.length() <= 0) 
     { 

     } 


     return false; 
    } 


    //Computes the dog's age in human years. 
    public int humanAge() 
    { 
     int theAge = 7 * age; 

     return theAge; 
    } 

    //Returns the value of bark if true 
    public String(speak) 
    { 
     return bark; 
    } 


    //Method: <privacy: (private, public)> <return-type (data type or void)> <methodName>(<argument>){ 
    //  <body> 
    //  return 
    // } 

    public String toString() 
    { 
     String str = ""; 
     str += "Name: " + name; 
     str += "Weight: " + weight; 
     str += "Bark: " + bark; 
     str += "Hair Length: " + hairLength; 
     str += "Tail: " + tail; 
     str += "Age: " + age; 

     return str; 
    } 

} 
+0

究竟validName方法呢? –

回答

0

我有麻煩試圖找出如何做validName方法。

假設你validName方法檢查是否是否存在只有字母有效的名稱通過檢查給出:

//Return true if name is valid 
private boolean validName(String str) 
{ 
    if(str == null || str.length() == 0) 
     return false; 
    return str.toLowerCase().matches("[a-z]+"); //Name only has a-z(A-Z) 
} 

也辦了講方法以同樣的方式還是沒有?

嗯,我不知道你是什麼意思的「同樣的方式」。但是你說的方法不正確。

根據你的描述,應該是:

public String speak(){ 
    return bark; 
} 

一些你不問,但可以做的更好:

你兩次實現類構造函數。你可以像這樣調用構造函數:

public Dog(){ 
    this(""); //invoke Dog(String) 
} 

public Dog(String theName){ 
    age = 0; 
    weight = 0; 
    name = theName; 
    bark = ""; 
    hairLength = false; 
    tail = TailType.NONE; 
} 

上面的效果與你所做的一樣,但是這是首選。

0

你也可以這樣做,如果你不知道正則表達式:

private boolean validName(String str) 
{ char[] letters = str.toUpperCase().toCharArray(); 
    for(int i = 0 ; i < letters.length; i++){ 
     int oneLetter = (int) letters[i]; 
     if(!(oneLetter > 64 && oneLetter < 91)) // letters as ASCII for A-Z 
      return false; // if anyone is not A-Z then return false 

    } 
    return true; // if every letter is valid then return true 
} 
相關問題