我试图为我的LinkedBinaryTree类编写最优雅的isEmpty()方法。
当编译器与if语句交互时,它应该返回一个布尔值,或者返回true为false。但是,由于必须在if语句外面返回值 ,因此我返回了false值。我的逻辑是if(count == 0),isEmpty()返回true并且不会打扰第二行(返回false)。这是对的吗?
public class LinkedBinaryTree<T> implements BinaryTreeADT<T>
{
protected int count;
protected BinaryTreeNode<T> root;
/**
* Creates an empty binary tree.
*/
public LinkedBinaryTree()
{
count = 0;
root = null;
}
/**
* Creates a binary tree with the specified element as its root.
*
* @param element the element that will become the root of the new binary tree
*/
public LinkedBinaryTree (T element)
{
count = 1;
root = new BinaryTreeNode<T> (element);
}
/**
* Returns true if this binary tree is empty and false otherwise.
*
* @return true if this binary tree is empty
*/
public boolean isEmpty()
{
if (count == 0);
return false;
}
答案 0 :(得分:2)
“这是对的吗?” - 你可以通过测试找出答案。我建议你这样做,理想情况是在jUnit测试中:
@Test
public void isEmpty_returns_true_for_empty_list() {
LinkedBinaryTree tree = new LinkedBinaryTree();
assertTrue(tree.isEmpty());
}
...和非空树的类似测试。
“最优雅”?
我会选择其中一个:
public boolean isEmpty() {
return count == 0;
}
...或者......或者......
public boolean isEmpty() {
return root == null;
}
(您确定您的实施需要count
变量吗?)
Java与C一样,允许您省略if
语句中的大括号。一个共同的建议是永远不要省略大括号,因为这是混乱的原因。
你所写的内容相当于:
if(count == 0) {
}
return false;
所以它总是返回false。
你可以写:
if(count == 0) {
return true;
}
return false;
或没有大括号(不推荐):
if(count == 0)
return true;
return false;
但由于这相当于return count == 0
,因此使用if
语句不够优雅。
答案 1 :(得分:0)
您可以在没有&#34; 的情况下返回您的条件,如果&#34;声明
public boolean isEmpty() {
return (count == 0);
}