如果我将这段代码的else
if部分更改为else语句,则它可以毫无问题地运行,因此可以了解如何使其运行。我有些困惑的是,为什么当它处于当前形式时会收到一个丢失的return语句错误。我的回报取决于负数布尔变量的值。我涵盖了真实和错误的状态,难道不足以涵盖所有内容吗?
还是我总是必须在else内包含return语句,还是在我的函数底部添加一个无意义的return true,以便编译器接受我的代码涵盖所有情况?
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public boolean posNeg(int a, int b, boolean negative) {
if (!negative) {
return (a < 0 && b > 0) || (a > 0 && b < 0);
}
else if (negative) {
return (a < 0 && b < 0);
}
}
public static void main (String[] args) throws java.lang.Exception
{
}
}
当编译器看到else if
没有else
返回或结尾的return语句时,不能确定所有控制路径都将导致有效的return语句。
编译器有时可能很聪明,但是在这种情况下(也不应该)很聪明。
此行为在您的示例中很有帮助:else if
在这种情况下,绝对没有理由使用an 。简单else
易读,简洁明了且不易出错。
else
在这种情况下,An 非常具有表现力。它表示“ 与if子句相反 ”,如果将来代码更改,情况仍将如此。
如果编译器允许,您当前的代码更有可能包含和/或引入错误。
这是我重写方法主体的方法:
if (negative) {
return (a < 0 && b < 0);
}
else {
return (a < 0 && b > 0) || (a > 0 && b < 0);
}
通常if (negative)
,if (!negative)
除非有令人信服的理由(即可读性),否则您应该优先考虑这样做。
另外,很多人(包括我自己)都尝试在 if / else 语句中将最简单的子句放在第一位。使代码易于阅读是一件好事。
请查看StephenC的答案,以获得技术上的解释以及有关为何编译器以这种方式运行的更多背景信息。
我很困惑,为什么这段代码在我包含一条返回语句的情况下却没有返回语句。任何帮助都将不胜感激! 问题代码:
因此,最近我正在测试使用返回值的方法,但我不断得到一个错误,指出我的方法“basicpoints”中缺少一个return语句。我有一个return语句,但我不知道为什么它总是给我这个错误,我需要把return语句放在方法的不同部分吗?
问题内容: 好的,我有一个非常简单的mysql数据库,但是当我尝试通过mysql-admin运行此查询时,出现奇怪的错误 INSERT INTO自定义报告(研究,类型,模式,选择,描述)VALUES(‘1’,‘2’,‘3’,‘4’,‘5’); 错误: 1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以便在“选择,描述” VALUES(“ 1”,“ 2”,“
问题内容: 什么是语句的简单基本解释是什么,如何在中使用它? 它和语句之间有什么区别? 问题答案: 该函数在控制台中写入一个字符串,即“打印”。该语句使您的函数退出并将值返回给其调用者。通常,功能的要点是接受输入并返回某些内容。当函数准备向其调用者返回值时使用该语句。 例如,这是一个同时使用和的函数: 现在,您可以运行调用的代码,如下所示: 如果将其作为脚本(例如.py文件)而不是在Python解
我对编程很陌生,所以这个问题看起来很傻。下面提到的方法有一个作为int数组的返回类型。当我们不抛出任何未经检查的异常时,它会抛出一个我理解的错误。但是为什么包含一个未检查的异常会删除那个错误呢?它仍然没有任何返回语句,不是吗?
只是一个普通的Java问题。为什么null变量存在?我正在给CS学生做一些介绍,其中一个最常见的错误是分号,他们不应该在分号上。例如 圆括号前面的分号放错了位置,使if语句无法正常工作,我想知道为什么空行在Java程序中会这样做。在这个例子中,null似乎是一个不利因素,并且想知道什么时候有人会在编码时使用它。