编写一个包含两个类的java程序
问题描述:
我试图编写一个包含两个类的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;
}
}
答
我有麻烦试图找出如何做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;
}
上面的效果与你所做的一样,但是这是首选。
答
你也可以这样做,如果你不知道正则表达式:
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
}
究竟validName方法呢? –