Java 为什么Math.abs()返回25并且没有显式返回值?

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

我对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 - 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
,并得到了您在这个答案中看到的输出。我看了一下输出的模式,再次思考“那不可能是正确的”,然后写下答案提醒您注意。简而言之,我观察了程序的输出,并应用了常识。