簡體   English   中英

我的方法需要返回一個字符串,我在做什么錯?

[英]My method needs to return a string, what am i doing wrong?

我的程序抱怨該方法未返回字符串。 我的退貨單出了什么問題? 謝謝

 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");

     }
 }

您的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 ,它將在我的代碼中返回"" ,添加所需的任何內容以供用戶理解,請不要將其留空

我剛剛修復了您的代碼: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語句不應發生的事情。 這將使您的代碼更容易閱讀和理解 ,檢查返回的字符串是否為null或空字符串。 進一步閱讀

您需要處理n不等於1的其他情況。該方法必須返回錯誤字符串或“”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM