- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在我的 java 代码中使用有组织的 BST。这个函数/方法应该在树中搜索具有特定值的节点,并让用户知道它是否存在。
void search(int item, Node root, int r, int c) {
//if the integer is found
if(root.val == item) {
System.out.println("integer located at row: " + r + " & child: " + c + "\n");
}
//if the integer is not found (use the closest value to find it)
else if(root != null) {
if(item < root.val)
search(item, root.left, r + 1, (c * 2) - 1);
else
search(item, root.right, r + 1, c * 2);
}
//if the root is a null (it doesn't exist or cannot be found)
else {
System.out.println("integer cannot be located\n");
}
}
问题出在最后的else语句上。我的编译器说 else 语句中的任何内容都是死代码,这意味着它没有被使用。但是,如果函数确实遇到 null 并且无法找到具有指定值的节点,我需要 else 语句中的代码。如果我将第二个 else 语句更改为 else if(root.val != item && root != null) ,它就会消失,但它让我想知道是否存在 root 不等于的点null 我知道这应该是一种可能性。 else 语句真的是死代码吗?如果是,我该如何更改它?
最佳答案
这是死代码,因为 root
的取消引用在root.val
要求 root 为非 null
。如果是null
你会得到一个NullPointerException
.
在我的 IDE 中这是一个警告;代码在语法上是正确的,但从语义上来说,最终的 else
永远不会被输入。
要解决此问题,请检查 null
在 if
首先声明:
void search(int item, Node root, int r, int c) {
if (root == null) {
// if the root is a null (it doesn't exist or cannot be found)
System.out.println("integer cannot be located\n");
} else if (root.val == item) {
// if the integer is found
System.out.println("integer located at row: " + r + " & child: " + c + "\n");
} else if (item < root.val) {
// if the integer is not found (use the closest value to the left to find it)
search(item, root.left, r + 1, (c * 2) - 1);
} else {
// if the integer is not found (use the closest value to the right find it)
search(item, root.right, r + 1, c * 2);
}
}
请注意,您也许可以更改前两个 if
以直接返回或停止方法执行的方式。然后检查item < root.val
不必在 else
内堵塞。你越浅if
语句越好(但始终为每个 block 使用大括号!)。
关于java - 我的 else 语句中的代码已死,我不相信这是真的(java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60131609/
我有类似下面的代码: ... id: myComponent signal updateState() property variant modelList: [] Repeater { mo
我正在处理一些我无法展示的私有(private)代码,但我已经制作了一些示例代码来描述我的问题: 主.c: #include #include #include #include typede
这个问题在这里已经有了答案: 关闭10 年前。 Possible Duplicate: what are the differences in die() and exit() in PHP? 我想
在编写 Perl 模块时,在模块内部使用 croak/die 是一个好习惯吗? 毕竟,如果调用者不使用 eval block ,模块可能会使调用它的程序崩溃。 在这些情况下,最佳做法是什么? 最佳答案
我有一些搜索线程正在存储结果。我知道当线程启动时,JVM native 代码会代理在操作系统上创建新 native 线程的请求。这需要 JVM 之外的一些内存。当线程终止并且我保留对它的引用并将其用作
我刚刚花了很多时间调试一个我追溯到 wantarray() 的问题。 .我已将其提炼为这个测试用例。 (忽略 $! 在这种情况下不会有任何有用信息的事实)。我想知道为什么wantarray在第二个示例
我看到一些代码是这样做的: if(something){ echo 'exit from program'; die; } ...more code 和其他只使用 die 的人: if
我正在尝试将此表格用于: 如果任何 $_POST 变量等于任何其他 $_POST 变量抛出错误。 如果只有几个,那不是问题,但我有大约 20 个左右所以如果我想这样做,我将不得不像这样 但这
每次我运行: hadoop dfsadmin -report 我得到以下输出: Configured Capacity: 0 (0 KB) Present Capacity: 0 (0 KB) DFS
我是一名优秀的程序员,十分优秀!