我知道這些問題很多,而且我嘗試過每一個問題。爲什麼這會輸出錯誤:not all code paths return a value
?並非所有代碼路徑都返回一個值PigLatin
using System;
namespace PigLatin
{
public class Translate
{
public static string Transfer(string input)
{
string firstChar = "";
string lastChars = "";
int x;
string vowel = "AEIOUaeiou";
string[] pieces = input.Split(null);
try
{
foreach (string piece in pieces)
{
lastChars = piece.Substring(1);
firstChar = piece.Substring(0, 1);
x = vowel.IndexOf(firstChar);
if (x == -1)
{
var pigLatin = lastChars + firstChar + "ay";
return pigLatin;
}
else
{
var pigLatin = firstChar + lastChars + "way";
return pigLatin;
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
static void Main(string[] args)
{
Console.Write("Enter word to translate: ");
var toTranslate = Console.ReadLine();
Console.WriteLine(Transfer(toTranslate));
}
}
}
我已經試過什麼:
改變
Transfer
的變量const
:const string firstChar = ""; const string lastChars = ""; int x; const string vowel = "AEIOUaeiou";
擺脫if語句的使用操作
var pigLatin = ""; x == -1 ? pigLatin = lastChars + firstChar + "ay" : pigLatin = firstChar + lastChars + "way" return pigLatin;
什麼是導致錯誤?
如果有異常,會發生什麼後return語句?您將錯誤寫入控制檯,然後..繼續而不返回值。此外,如果'pieces'中沒有任何內容,for循環將不會執行,並且..您不執行'return'語句。 – Blorgbeard
你錯過了一個return語句! – Dazzler
另外,爲什麼「不是所有的代碼路徑都返回一個值」表明變量常量會有所幫助? – Blorgbeard