zoukankan      html  css  js  c++  java
  • 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
    ",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;
        }
    }

      

  • 相关阅读:
    CENTOS安装部署zabbix
    分解XML方法
    Git使用摘要
    POJ 1274 The Perfect Stall 水二分匹配
    [leetcode]Pascal&#39;s Triangle II
    swift学习笔记(六)析关闭过程和使用分配给属性的默认值
    Qt学习一门:直接使用QT具
    mybatis13 resultMap
    mybatis12 Usermapper.xml
    mybatis11 sqlMapConfig.xml文件说明
  • 原文地址:https://www.cnblogs.com/duanguyuan/p/3643661.html
Copyright © 2011-2022 走看看