-1

好的,所以这个程序应该使用用户定义的方法来查找字符串中每个字符的数值并将其分配给键盘上的数字......即 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;
            }

        }   
    }
4

3 回答 3

1

您正在从一个条件(在您的方法中getNumber返回,可能是您的条件之一在运行时得到满足,但编译器不够聪明,无法确定,因此出现错误。

最后,您可以拥有return 0return -1返回无效的方法result

于 2013-11-06T17:19:02.160 回答
0

那是因为你有 if 和 else if 带有 return 语句的块,但最后没有 else 块或 return 语句。请注意倒数第二行的 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
}   
于 2013-11-06T17:19:40.177 回答
0

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

对你来说它没有太大变化:因为你确定你result是在一个指定的范围内,你可以例如。add 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 而不是。

于 2013-11-06T17:33:12.393 回答