Javadoc 注释 - CompareTo?
Javadoc comments - CompareTo?
我的书要求我为一段代码写一个Javadoc注释。在大多数情况下,我了解如何编写 javadoc,但我不了解该程序在做什么。
"Write a Javadoc comment for the following method of a class Person. Assume that class Person has two String data fields lastName and firstName with the obvious meaning. Provide preconditions and postconditions if needed."
public int compareTo(Person per) {
if (lastName.equals(per.lastName))
return firstName.compareTo(per.firstName);
else
return lastName.compareTo(per.lastName);
}
/**
* Method to return?
*
* @param compare the firstName lexicographically
* @param compare the lastName lexicographically
*/
我真的不知道这是在做什么。它返回一个数字吗?我查看了
上的示例
http://www.tutorialspoint.com/java/java_string_compareto.htm
首先你的 compareTo 方法看起来不适合我:- Public 应该是 public.
其次,您的方法是根据字典顺序的 firstName 或 lastName 比较两个 Person 对象,即字母顺序(A 在 B 之前或 A
例如:-
String firstName1="B";
String firstName2="A";
String firstName3="B";
String firstName4="C";
System.out.println(firstName1.compareTo(firstName2));
System.out.println(firstName1.compareTo(firstName3));
System.out.println(firstName1.compareTo(firstName4));
Output: 1
0
-1
如果 firstName1 < firstName3 则 -1(负整数,first 小于 second)
If firstName1 > firstName2 then 1 (正整数, first 大于 second)
如果 firstName1 == firstName2 则 0(零,两者相等)
现在来看你的 compareTo 方法,它应该是这样的:-
public int compareTo(Person per) {
int i= firstName.compareTo(per.firstName);
if(0!= i) return i;
else
return lastName.compareTo(per.lastName);
}
确定不是这个样子?
Public int compareTo(Person per) {
if(firstName.compareTo(per.firstName) != 0){
return firstName.compareTo(per.firstName);
}
else{
return lastName.compareTo(per.lastName);
}
}
此代码将根据名字的字典顺序进行排序,如果它们相同,则将对姓氏进行排序。
每个 compareTo 方法 returns 一个 -1、0 或 1,具体取决于第一个字符串在排序中是否先出现。
"Lexographically" 表示如果按其(左对齐或右对齐)字符的 unicode 值排序,它将出现在另一个字符串之后或其他字符串之前。
将此添加到您的代码中并向我们展示结果 -
System.out.println(Arrays.toString((per.firstName).getBytes()));
System.out.println(Arrays.toString((firstName).getBytes()));
System.out.println(Arrays.toString((per.lastName).getBytes()));
System.out.println(Arrays.toString((lastName).getBytes()));
现在让我们把它移开:这是句法无效的代码。有效代码如下所示:
public int compareTo(Person per) {
if(firstName.compareTo(per.firstName) != 0) {
return firstName.compareTo(per.firstName);
} else {
return lastName.compareTo(per.lastName);
}
}
现在,看看你得到的 Javadoc。
@param
指示函数的有效参数。你只有一个,所以你可能只有一个 @param
声明。
- 因为这个方法returns一个值,你需要有一个
@return
声明。
这会将您的 Javadoc 更改为此。
/**
* Method to return?
*
* @param per the person
* @return a value < 0, 0, or > 0 if...
*/
public int compareTo(Person per) {
if(firstName.compareTo(per.firstName) != 0) {
return firstName.compareTo(per.firstName);
} else {
return lastName.compareTo(per.lastName);
}
}
/**
之后的部分是放置具体实施信息的地方;对使用此方法的人有用的东西。考虑到此方法不检查 any 名字或姓氏是否为 null
,将其包含在此处很有价值。剩下的我留作 reader.
的练习
您的书本应该在某个时候解释什么是 Comparable
。 Java 中的比较是通过从 compareTo()
方法返回一个整数(表示小于、大于或等于传入的值)来完成的。您发布的方法是根据名字和姓氏比较 Person
。如果他们的姓氏相同,则使用他们的名字进行比较。否则,将使用他们的姓氏。
这将订购一组 People
,如下所示:
Doe, John
Obama, Barack
Smith, John
Smith, Sally
我的书要求我为一段代码写一个Javadoc注释。在大多数情况下,我了解如何编写 javadoc,但我不了解该程序在做什么。
"Write a Javadoc comment for the following method of a class Person. Assume that class Person has two String data fields lastName and firstName with the obvious meaning. Provide preconditions and postconditions if needed."
public int compareTo(Person per) {
if (lastName.equals(per.lastName))
return firstName.compareTo(per.firstName);
else
return lastName.compareTo(per.lastName);
}
/**
* Method to return?
*
* @param compare the firstName lexicographically
* @param compare the lastName lexicographically
*/
我真的不知道这是在做什么。它返回一个数字吗?我查看了
上的示例http://www.tutorialspoint.com/java/java_string_compareto.htm
首先你的 compareTo 方法看起来不适合我:- Public 应该是 public.
其次,您的方法是根据字典顺序的 firstName 或 lastName 比较两个 Person 对象,即字母顺序(A 在 B 之前或 A
例如:-
String firstName1="B";
String firstName2="A";
String firstName3="B";
String firstName4="C";
System.out.println(firstName1.compareTo(firstName2));
System.out.println(firstName1.compareTo(firstName3));
System.out.println(firstName1.compareTo(firstName4));
Output: 1
0
-1
如果 firstName1 < firstName3 则 -1(负整数,first 小于 second)
If firstName1 > firstName2 then 1 (正整数, first 大于 second)
如果 firstName1 == firstName2 则 0(零,两者相等)
现在来看你的 compareTo 方法,它应该是这样的:-
public int compareTo(Person per) {
int i= firstName.compareTo(per.firstName);
if(0!= i) return i;
else
return lastName.compareTo(per.lastName);
}
确定不是这个样子?
Public int compareTo(Person per) {
if(firstName.compareTo(per.firstName) != 0){
return firstName.compareTo(per.firstName);
}
else{
return lastName.compareTo(per.lastName);
}
}
此代码将根据名字的字典顺序进行排序,如果它们相同,则将对姓氏进行排序。
每个 compareTo 方法 returns 一个 -1、0 或 1,具体取决于第一个字符串在排序中是否先出现。
"Lexographically" 表示如果按其(左对齐或右对齐)字符的 unicode 值排序,它将出现在另一个字符串之后或其他字符串之前。
将此添加到您的代码中并向我们展示结果 -
System.out.println(Arrays.toString((per.firstName).getBytes()));
System.out.println(Arrays.toString((firstName).getBytes()));
System.out.println(Arrays.toString((per.lastName).getBytes()));
System.out.println(Arrays.toString((lastName).getBytes()));
现在让我们把它移开:这是句法无效的代码。有效代码如下所示:
public int compareTo(Person per) {
if(firstName.compareTo(per.firstName) != 0) {
return firstName.compareTo(per.firstName);
} else {
return lastName.compareTo(per.lastName);
}
}
现在,看看你得到的 Javadoc。
@param
指示函数的有效参数。你只有一个,所以你可能只有一个@param
声明。- 因为这个方法returns一个值,你需要有一个
@return
声明。
这会将您的 Javadoc 更改为此。
/**
* Method to return?
*
* @param per the person
* @return a value < 0, 0, or > 0 if...
*/
public int compareTo(Person per) {
if(firstName.compareTo(per.firstName) != 0) {
return firstName.compareTo(per.firstName);
} else {
return lastName.compareTo(per.lastName);
}
}
/**
之后的部分是放置具体实施信息的地方;对使用此方法的人有用的东西。考虑到此方法不检查 any 名字或姓氏是否为 null
,将其包含在此处很有价值。剩下的我留作 reader.
您的书本应该在某个时候解释什么是 Comparable
。 Java 中的比较是通过从 compareTo()
方法返回一个整数(表示小于、大于或等于传入的值)来完成的。您发布的方法是根据名字和姓氏比较 Person
。如果他们的姓氏相同,则使用他们的名字进行比较。否则,将使用他们的姓氏。
这将订购一组 People
,如下所示:
Doe, John
Obama, Barack
Smith, John
Smith, Sally