2016-05-26 10 views
-2

私はこれらの質問がたくさんあることを知っており、私はすべてのものを試しました。このエラーはなぜ出力されますか:not all code paths return a valueすべてのコードパスが値を返すわけではありません。

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; 
    
    を使用して:

    • constTransfer内の変数を変更する:私が試した何

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

    何が原因なのですか?

  • +2

    後にreturn文が欠落していますか?コンソールにエラーを書き込み、次に値を返さずに続行します。また、 'pieces'に何もない場合、forループは実行されません。あなたは' return'ステートメントを実行しません。 – Blorgbeard

    +2

    あなたはリターンステートメントがありません! – Dazzler

    +1

    また、なぜ「すべてのコードパスが値を返すわけではない」ということは、変数を定数にすることが助けになることを示していますか? – Blorgbeard

    答えて

    0

    あなたは例外がある場合はどうなるのあなたのtryとcatchブロック

    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()); 
         } 
         return 1; //or add any valid return value. This is your missing statement 
        } 
    
        static void Main(string[] args) 
        { 
         Console.Write("Enter word to translate: "); 
         var toTranslate = Console.ReadLine(); 
         Console.WriteLine(Transfer(toTranslate)); 
        } 
        } 
    } 
    
    +0

    これはコンパイルされません。 '1'は' int'型を持ち、 'string'を返すと宣言されたメソッドでは返すことができません。とにかくコードを正しいものにするには十分ではありませんでした。 – hvd

    +0

    @hvd OPは何が欠けているのかを尋ねました。コメントに「1」だけでなく何らかの値を返すことができます。適切な戻り値で修正するのは、オペレーション次第です。 :) – Dazzler

    1

    理由は次のとおりです。例外が発生し、キャッチがトリガされた場合、値は返されません。

     catch (Exception e) 
         { 
          Console.WriteLine(e.ToString()); 
         } 
         return ""; // this should fix the error message. 
        } 
    
    +0

    これは、コンパイラにエラーメッセージの発行を停止させるのに十分かもしれませんが、コードを正しいものにするには十分ではありません。 – hvd

    +0

    @hvd opには「何が原因なのですか?私はそれに答えました。彼は適切に豚のラテンを描画するようにコードを修正するように私に求めなかった。あなたは私に "賛成投票"を負っています。 :P – BoltBait

    +0

    例外が発生した後に 'return" ";'が正しく実行されていれば、OPのコードの残りの部分を無視する意味があったでしょうが、 t。 – hvd

    関連する問題