获得“缺少退货声明”

时间:2013-11-06 17:17:49

标签: java methods return defined

好的,所以这个程序应该使用用户定义的方法来查找字符串中每个字符的数值并将其分配给键盘上的数字... 即 1800FLOWERS到18003569377

当我尝试编译时,在getNumber方法的最后得到一个“缺少返回语句”。请有人帮帮我

import java.util.Scanner;           //import scanner object

public class phone

    {
    public static void main(String [] args)
    {
    int i = 0;
        Scanner scan= new Scanner(System.in);           



        System.out.println("Enter a phone number"); 
        String number = scan.nextLine();
        String upperCaseLetter = number.toUpperCase();
        int length = number.length();   

        if (i <= length)
            {   
                char result = number.charAt(i);
                int carat = getNumber(result);
                System.out.print(""+carat+"");
                i++;
            }

        }



        public static int getNumber(char result) 
        {
                if (result == 65 || result == 66 || result == 67)
            {
                result = 2;
                return result;
            }   
                else if (result == 68 || result == 69 || result == 70)
            {
                result = 3;
                return result;
            }   
            else if (result == 71 || result == 72 || result == 73)  
            {
                result = 4;
                return result;
            }

            else if (result == 74 || result == 75 || result == 76)  
            {
                result = 5;
                return result;
            }
            else if (result == 77 || result == 78 || result == 79)  
            {
                result = 6;
                return result;
            }
            else if (result == 80 || result == 81 || result == 82 || result == 83)  
            {
                result = 7;
                return result;
            }
            else if (result == 84 || result == 85 || result == 86)  
            {
                result = 8;
                return result;
            }
        else if (result == 87 || result == 88 || result == 89 || result == 90)  
            {
                result = 9;
                return result;
            }

        }   
    }

3 个答案:

答案 0 :(得分:1)

你是从一个条件(在你的方法getNumber中返回的,可能是你的一个条件在运行时满意但编译器不够聪明,无法确定,因此错误。

在您的方法结束时,您可以return 0return -1返回无效的result

答案 1 :(得分:0)

那是因为你有if和else if块有return语句但是没有else阻塞或返回语句。注意最后一行的return语句。

public static int getNumber(char result) 
{
        if (result == 65 || result == 66 || result == 67)
    {
        result = 2;
        return result;
    }   
        else if (result == 68 || result == 69 || result == 70)
    {
        result = 3;
        return result;
    }   
    else if (result == 71 || result == 72 || result == 73)  
    {
        result = 4;
        return result;
    }

    else if (result == 74 || result == 75 || result == 76)  
    {
        result = 5;
        return result;
    }
    else if (result == 77 || result == 78 || result == 79)  
    {
        result = 6;
        return result;
    }
    else if (result == 80 || result == 81 || result == 82 || result == 83)  
    {
        result = 7;
        return result;
    }
    else if (result == 84 || result == 85 || result == 86)  
    {
        result = 8;
        return result;
    }
else if (result == 87 || result == 88 || result == 89 || result == 90)  
    {
        result = 9;
        return result;
    }
    return -1; // NOTICE THIS
}   

答案 2 :(得分:0)

你的方法getNumber需要涵盖所有情况,也就是result不是你在代码中提到的那些情况(否则在某些情况下方法不会返回任何内容,那就是你的编译器很生气。)

对你而言,它没有太大的变化:因为你确定你的result来自指定的范围,你可以为ex。添加return 0;(并且不返回null,因为null不是int,并且声明您的方法返回int)。

编辑:您的方法返回-1,因为您的charAt(0)是单个字符,而不是int。检查charAt(0) == '0'而不是charAt(0) == 0,因为第二个将您的char与int进行比较。你需要知道1 != '1'。更重要的是,你的if (i <= length)只是检查charAt(0),而不是更多,因为你没有循环它。如果您想浏览整个字符串number,请转到while(i <= length)而不是if。