Java 为什么Math.abs()返回25并且没有显式返回值?
我对math.abs()函数有点困惑。我需要调试这段代码,但不知何故我找不到问题。当我尝试打印结果时,它总是说“无显式返回值”Java 为什么Math.abs()返回25并且没有显式返回值?,java,Java,我对math.abs()函数有点困惑。我需要调试这段代码,但不知何故我找不到问题。当我尝试打印结果时,它总是说“无显式返回值” public class Test { public static void main(String[] args) { for (int i = 0; i < 50; i++) { for (int j = 0; j < 50; j++) { if (Math.abs(i
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 50; i++) {
for (int j = 0; j < 50; j++) {
if (Math.abs(i - 25) + Math.abs(j - 25) > 25) {
System.out.println(" ");
} else {
System.out.println("+");
}
}
System.out.println();
}
}
}
公共类测试{
公共静态void main(字符串[]args){
对于(int i=0;i<50;i++){
对于(int j=0;j<50;j++){
如果(数学abs(i-25)+数学abs(j-25)>25){
System.out.println(“”);
}否则{
System.out.println(“+”);
}
}
System.out.println();
}
}
}
当math.abs()的结果大于25时,我希望程序输出“”,当它小于25时,程序输出“+”。我认为这是第一个“问题”:
前两个println
s应该是print
——没有换行符
更改此选项后,输出将变为:
+
+++
+++++
+++++++
+++++++++
+++++++++++
+++++++++++++
+++++++++++++++
+++++++++++++++++
+++++++++++++++++++
+++++++++++++++++++++
+++++++++++++++++++++++
+++++++++++++++++++++++++
+++++++++++++++++++++++++++
+++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++
+++++++++++++++++++++++++++
+++++++++++++++++++++++++
+++++++++++++++++++++++
+++++++++++++++++++++
+++++++++++++++++++
+++++++++++++++++
+++++++++++++++
+++++++++++++
+++++++++++
+++++++++
+++++++
+++++
+++
第二个“问题”是输出在右侧和底部缺少一个+
我会让你去弄清楚的。这毕竟是你的任务,而不是我们的。没错——我看不出有哪一个明显的方面输出(从中可以看出)是错误的。一个问题需要足够明确,让读者真正知道他们被要求帮助解决的问题是什么;也就是说,正是您期望的输出,以及您得到的结果。(这也有助于在可能出现意外/错误输出的最小范围内进行循环,以便于讨论)。我们的任务是识别代码中的问题。我认为当程序将math.abs()值与>25进行比较时会出现错误。什么错误?按照上面的ideone.com链接,查看您的代码在在线解释器中运行;它不会抛出任何错误。顺便说一句,前两个
println
s应该是print
-没有换行符。void方法main没有返回值可能是错误传递的,因此调试可能不正确。如果需要,可以使用断点或单步执行。如果您谈论的是“无显式返回值”警告,那么它只是一个警告,而且没有意义,因为您将值声明为void
。但是,如果您将其声明为int
,则需要执行类似返回0
的操作。还有一个问题,您是如何使用调试器得出该结论的?我认为我不会很快发现问题:O@zer0-那天我没有使用调试器。我运行代码,或者更确切地说是点击Charles Duffy提供的链接,看到很多空行,并认为“这不可能是正确的”,所以我查看代码,看到了println
调用和Joop Eggen的评论,所以我简单地将两个println
更改为print
,并得到了您在这个答案中看到的输出。我看了一下输出的模式,再次思考“那不可能是正确的”,然后写下答案提醒您注意。简而言之,我观察了程序的输出,并应用了常识。