[英]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.