我的方法需要返回一个字符串,我做错了什么?

时间:2015-02-26 21:32:45

标签: java

我的程序抱怨该方法没有返回字符串。我的退货声明我做错了什么?感谢

 public String diskGame( int n)
 {   
     char fromPole = 'A';
     char toPole = 'B';


     //base case
     if (n == 1)  //there is only 1 disk left
     {
        return( "Move White from " + fromPole + " to " + toPole + "/n");

     }
 }

3 个答案:

答案 0 :(得分:3)

您的return声明位于IF,这是一个问题。

IF n is not equal to 1程序将无法返回return语句,从而导致错误。

添加退货声明

     public String diskGame( int n)
     {   
         char fromPole = 'A';
         char toPole = 'B';
         String result = "";

         //base case
         if (n == 1)  //there is only 1 disk left
         {
           result = "Move White from " + fromPole + " to " + toPole + "/n"

         }
       return result;
     }

显然,您可以将result的默认值设置为您想要的任何内容。如果n!=1它会在我的代码中返回"",添加您想要的任何内容以供用户理解,并且#39; t留空

答案 1 :(得分:1)

我刚刚修改了你的代码:D

public String diskGame( int n) throws MyFirstException
 {   
     char fromPole = 'A';
     char toPole = 'B';
     //base case
     if (n == 1)  //there is only 1 disk left
     {
        return( "Move White from " + fromPole + " to " + toPole + "/n");

     }
     throw new MyFirstException("N is not equal to one");
 }

MyFirstException实现:

public class MyFirstException extends Exception
{
   public MyFirstException(String message)
   {
       super(message);
    }
}

使用示例:

//code
n = 500;
try
{
   // code
   System.out.println(diskGame(n));
   // code
}
catch (MyFirstException e)
{
    System.out.println("WTF: "+e.getMessage());
    // code to handle the exception, the System.out.println or logging are optional
}

基本上,当N的值不是1时,您的代码不知道该怎么做。

通过调整异常而不是null或空字符串,你可以处理优雅这个不应该使用try-catch语句发生的事情。 它将使您的代码更容易阅读和理解检查返回的字符串是否为空或空字符串。 Further reading

答案 2 :(得分:1)

您需要处理n不等于1的其他场景。该方法必须返回错误字符串或“”。