如何在java中返回而不是中断

Posted

技术标签:

【中文标题】如何在java中返回而不是中断【英文标题】:how to return instead of break in java 【发布时间】:2015-02-25 04:12:34 【问题描述】:

我正在编写一个算法,如果列表 a 中的三个元素总和为三个,则返回 true。列表中的每个元素都可以重复,所以只要有 0,我就会有 true。我的问题不在算法上,尽管我确实需要对第二个 if 语句进行修订(额外的约束)才能完成该算法。阅读回复后,我已将代码修改为仅返回。现在我的代码没有任何输出,但我相信这是因为我需要调整我的第二个条件。

public class main 

public static void main(String args[]) 
int[] a =  -6, 2, 4 ; // true -6, 2, 4
// int [] a = -6, 2, 5;  false
// int [] a = -6, 3, 10, 200; true -6, 3, 3
// int [] a = 8, 2, -1, 15; true  2, -1, -1
// int [] a = 8, 2, -1, -1, 15; true 2, -1, -1
// int [] a = 5, 1, 0, 3, 6; true 0, 0, 0
sum(a);


public static boolean sum(int[] a) 
int x = 0;
int len = a.length;
boolean check = false;
while (x < len) 
    if (a[x] == 0) 

        check = true;

        if (check == true)
        System.out.println("break time yo@");
        break;
    
    if (a[x] + a[x + 1] + a[x + 2] == 0 ) 
        check = true;
        if (check == true)
            break;
    
    for (int i = 0; i <= len; i++) 
        if ((i == 2 * a[x]) || (2 * i == a[x])) 
            check = true;
            if (check == true)
                break;
        
    
    x += 1;


return check;



【问题讨论】:

为什么还要多一个true?您的代码只有一次System.out.println(check);。为什么你期望它会发生两次? @DavidWallace 我认为一个 true 来自 System.out.println(check),第二个来自 return check(System.out.println(check) 之后的行。我刚刚开始自己学java。以前一直在用python,所以可能有一些明显的我不明白。 但是return check; 并不意味着“打印这个”。它只是意味着“停止运行此方法,并将值返回给调用它的任何方法”。没有自动打印返回值。 如果您的 while 循环再进行一次迭代然后进行单次迭代,您将出现数组索引越界异常。您正在添加 x+1、x+2... @NenadBulatovic 对,我在帖子中提到了这一点。我现在将致力于此。但是,为什么我的代码现在什么都不输出仍然让我感到困惑。 【参考方案1】:

您不必为这种事情而休息。只需将您的休息时间替换为

return true;

当您在 Java 中 return 时,代码会停止执行 - 它不会继续运行您的算法的结果。

只是给你举个例子,看一个这样的方法:

public boolean numberCheck(int number) 
    if(number == 20) 
        return true;
    
    return false;

如果数字等于 20,该方法将 return true 然后 stop - 它不会继续到 return false,因为一旦调用 return,执行就会有效停止.

【讨论】:

【参考方案2】:

对于您的问题,您甚至不需要check 变量。只需在需要时调用 return true;... 并在 while 循环之后调用 return false;

【讨论】:

【参考方案3】:

将 sum(a) 替换为 System.out.println(sum(a));你应该在控制台中打印出真假。

【讨论】:

布拉托维德。哦有趣。这是因为 sum(a) 只是简单地创建了对象/方法,但是在我执行 System.out.println(sum(a)) 之前,该方法不会运行?我只是自己开始java,我以前的语言是python。这是迄今为止我所学到的最接近的概念。 当您执行 System.out.println 时,它将打印 sum(a) 的结果。在这种情况下,它是真还是假。如果你返回其他东西,比如数字或字符串,那么它会打印出来。 @NenadBulatovic David Wallace。谢谢!

以上是关于如何在java中返回而不是中断的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 JAVA 方法从 Firestore 返回数据而不是 0 值? [复制]

java - 如何使用 lambda 表达式从 forEach 方法中中断[重复]

在获取数字的循环中,如何中断?初学者的憨憨问题。

如何在java中检查布尔方法的返回值

在clickhouse中,投射失败时如何返回null而不是抛出异常?

java中list的值是[null] 而不是 null ,结果集其实是空的,但是返回的却是[null],size=1,这如何判断