Java 編譯錯誤:缺少返回語句


示例:

import java.util.*;
import java.io.*;

public class tt {
    public static void main(String[] args) {
        foo();
    }
    
    public static String foo() {
        int i=0;
        while(i<10) {
            return "ggg";
        }
    }
}

該函數編譯便會報錯:缺少返回語句。盡管看起來(i<10)是肯定為真的,但是編譯器不會把i=0帶進去算,所以它覺得foo函數有可能無返回值(即while后條件為假的時候)。

同理,把while改成if,編譯報同樣的錯誤。

把while(i<10)改為while(true)后,不再報錯。

 

但是C就隨意得多,跟Java比起來以下如此不確定的代碼也能正常編譯運行:

#include <stdlib.h>
#include <stdio.h>

int main()
{
    int a=foo();
    printf("%d\n",a);
    return 0;
}

int foo()
{
    int i=0;
    while(i++<10)
    {
        if(i>5) return 5;
        else return 4;
    }
}

 

 再舉個java例子:

這么寫會提示缺少返回語句,

public static boolean has3(int[] a) {
    for(int i=0; i<a.length; ++i) {
        if (a[i]==3)
            return true;
        else
            return false;
    }
}

 

稍稍改動一下即可:

import java.util.*;
import java.io.*;

public class has {
    public static void main(String[] args) {
        int[] b = {1,2,3,4,5};
        int[] c = {1,2,4,5};
        System.out.println(has3(b));
        System.out.println(has3(c));
    }
    
    public static boolean has3(int[] a) {
        for(int i=0; i<a.length; ++i) {
            if (a[i]==3)
                return true;
            }
        return false;
    }
}

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM