我在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),它就会消失
匿名用户
你的第一个if
表达式:
if (root.val == item)
如果根为null
,则会抛出NullPointerExctive
,如果不是,则执行比较。因此,最终的其他
块永远无法执行。
您可以尝试重新排序代码:
void search(int item, Node root, int r, int c) {
if (root != null) {
if (root.val == item) {
System.out.println("integer located at row: " + r + " & child: " + c + "\n");
} else if (item < root.val) {
search(item, root.left, r + 1, (c * 2) - 1);
} else {
search(item, root.right, r + 1, c * 2);
}
} else {
System.out.println("integer cannot be located\n");
}
}
这是死代码,因为根中的
要求根目录为非空。如果它是根
的解引用。valnull
,你会得到NullPointerException
。
在我的IDE中,这是一个警告;代码在语法上是正确的,但在语义上,将永远不会输入最后的else
。
要解决这个问题,首先检查if
语句中的null
:
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
s。然后检查项
问题内容: 我正在为计费程序项目编写条件语句。对于我认识的初学者来说有点先进,但是我欢迎挑战。无论如何,我计划通过询问用户名和密码来启动程序。因此,这是我对该程序的第一个编码。 现在,当我运行此代码时,如果我键入了用户名的三个选项之外的其他选项,Python会打印出“无效的用户名”行。现在由于某种原因,它会打印出“有效的用户名”,然后继续输入密码提示。另外,如果我输入了除密码选项以外的任何内容,它
我遇到的问题是“是/否”语句,如果我输入“否”,它将继续退出程序。请告诉我问题出在哪里? 导入java。util。随机的导入java。util。扫描仪; 公共类NumberGame{private static final int DO_NOT_PLAY_reach=0; }
首先,我发现了另外两条有类似问题的线索。问题在于,他们没有为字符串使用正确的等号,也没有为他们的特定问题正确设置if语句的格式。 在我的任务中,我需要创建一个名为“猪”的游戏,玩家与计算机对决,在掷骰子时先获得100分。如果玩家在一个回合中掷1,他们不会得到额外的分数。如果玩家掷两个1,那么他们将失去所有分数。我还没有对电脑的回合进行编码,只是专注于玩家。请告诉我我做错了什么。提前非常感谢。 我的
这个代码基本上是将一个数字作为字符串,我的目标是获取字符串的每个索引并将其值传输到整数数组的索引,以便我的数字在整数数组中,并且数组的每个索引表示数字的一个数字
我很困惑,为什么这段代码在我包含一条返回语句的情况下却没有返回语句。任何帮助都将不胜感激! 问题代码:
我想在我们当前的android studio项目中添加一个if/else语句,因为我正在为我们的论文做一个聊天机器人。但我不知道怎么做,也不知道有没有可能。所以我们项目的流程是,如果我在chatbot上键入某个关键字,比如“schedule/schedule”,它就会显示我学校的时间表,或者学校什么时间、什么日期开学的时间表。 activity_main.xml: mainactivity.jav