C# 不断出现错误并非所有代码路径都会在我的翻译器上返回值关于如何修复此问题的任何建议? 使用系统; 使用System.Collections.Generic; 名称空间pig_laitn { 班级计划 { 静态void Main(字符串[]参数) { Console.WriteLine(“请输入要翻译成拉丁语的句子”); 字符串语句=Console.ReadLine().ToLower(); 翻译的字符串=译者(句子); Console.WriteLine(已翻译); } 静态布尔元音(char-ch) { 如果(ch='a'| | ch='e'| | ch='i'| | ch='o'| | ch='u') { 返回true; } 返回false; } 专用静态字符串转换器(字符串语句) { int pos=-1; char ch; List translated=新列表(); foreach(句子中的字符串。拆分(“”)) { for(int i=0;i此处缺少返回语句foreach循环后,您在代码末尾缺少返回。如果句子为空,将不会有返回。lol我知道这很愚蠢,谢谢您提醒我检查范围,我将返回语句向下移动,一切都很好 else { String a = word.Substring(pos); String b = word.Substring(0, pos); translated.Add(a + b + "ay"); } return string.Join(" ", translated); } // ----> Missing return statement here <--- }

C# 不断出现错误并非所有代码路径都会在我的翻译器上返回值关于如何修复此问题的任何建议? 使用系统; 使用System.Collections.Generic; 名称空间pig_laitn { 班级计划 { 静态void Main(字符串[]参数) { Console.WriteLine(“请输入要翻译成拉丁语的句子”); 字符串语句=Console.ReadLine().ToLower(); 翻译的字符串=译者(句子); Console.WriteLine(已翻译); } 静态布尔元音(char-ch) { 如果(ch='a'| | ch='e'| | ch='i'| | ch='o'| | ch='u') { 返回true; } 返回false; } 专用静态字符串转换器(字符串语句) { int pos=-1; char ch; List translated=新列表(); foreach(句子中的字符串。拆分(“”)) { for(int i=0;i此处缺少返回语句foreach循环后,您在代码末尾缺少返回。如果句子为空,将不会有返回。lol我知道这很愚蠢,谢谢您提醒我检查范围,我将返回语句向下移动,一切都很好 else { String a = word.Substring(pos); String b = word.Substring(0, pos); translated.Add(a + b + "ay"); } return string.Join(" ", translated); } // ----> Missing return statement here <--- },c#,C#,我想你的意思是循环阅读句子中的所有单词,而不是在处理第一个单词后返回。由于循环块中有一个return语句,因此它将执行后者而不是前者。这也解释了为什么不是所有代码路径都返回,因为如果不进行循环迭代,就不会命中任何return语句 只需移动return语句,使其位于循环之后: using System; using System.Collections.Generic; namespace pig_laitn { class Program { static vo

我想你的意思是循环阅读句子中的所有单词,而不是在处理第一个单词后返回。由于循环块中有一个
return
语句,因此它将执行后者而不是前者。这也解释了为什么不是所有代码路径都返回,因为如果不进行循环迭代,就不会命中任何return语句

只需移动
return
语句,使其位于循环之后:

using System;
using System.Collections.Generic;

namespace pig_laitn
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("please enter a sentence to be translated to pig latin");
            string sentence = Console.ReadLine().ToLower();
            string translated = Translator(sentence);

            
            Console.WriteLine(translated);
        }
         static Boolean IsVowel(char ch)
            {
                if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
                {
                    return true;
                }
                return false;
            }

        private static string Translator(string sentence)
        {
            int pos = -1;
            char ch;

            List<string> translated = new List<string>();

            foreach (string word in sentence.Split(' '))
            {
                for (int i = 0; i < word.Length; i++)
                {
                    ch = word[i];

                    if (IsVowel(ch))
                    {
                        pos = i;

                        break;
                    }
                }

                if (pos == 0)
                {
                    translated.Add(word + "way");
                }
                else
                {
                    String a = word.Substring(pos);
                    String b = word.Substring(0, pos);
                    translated.Add(a + b + "ay");
                }
                return string.Join(" ", translated);
            }

        }
    }

}

foreach
循环之后,缺少返回语句:

foreach (string word in sentence.Split(' '))
{
    // ...                
    // Do not return here, return after the loop.
}
return string.Join(" ", translated);
else
{
字符串a=字。子字符串(pos);
字符串b=字。子字符串(0,位置);
加上(a+b+“ay”);
}
返回字符串。Join(“,已翻译);
}

//----->此处缺少返回语句foreach循环后,您在代码末尾缺少返回。如果句子为空,将不会有返回。lol我知道这很愚蠢,谢谢您提醒我检查范围,我将返回语句向下移动,一切都很好
      else
      {
         String a = word.Substring(pos);
         String b = word.Substring(0, pos);
         translated.Add(a + b + "ay");
      }

      return string.Join(" ", translated);
   }
    
   // ----> Missing return statement here <---
}