C# 无法测试回文
我试图在控制台中转换文本并反转它,以查看它是否是回文。如果是,则返回true;如果不是,则返回false。然而,由于我是新手,刚刚开始学习C#,所以我面临着错误。我得到的错误如下: 'Palindrome.IsPalindrome(string)':并非所有代码路径都返回值 我不知道如何解决这个问题,我也不太明白,因此任何建议都将不胜感激。多谢各位C# 无法测试回文,c#,C#,我试图在控制台中转换文本并反转它,以查看它是否是回文。如果是,则返回true;如果不是,则返回false。然而,由于我是新手,刚刚开始学习C#,所以我面临着错误。我得到的错误如下: 'Palindrome.IsPalindrome(string)':并非所有代码路径都返回值 我不知道如何解决这个问题,我也不太明白,因此任何建议都将不胜感激。多谢各位 using System; public class Palindrome { public static bool IsPalindro
using System;
public class Palindrome
{
public static bool IsPalindrome(string word)
{
char[] temp = word.ToCharArray();
Array.Reverse(temp);
string emordnilap = new string(temp);
if(word.Equals(emordnilap)){
Console.WriteLine("true");
}else{
Console.WriteLine("false");
}
}
public static void Main(string[] args)
{
Console.WriteLine(Palindrome.IsPalindrome("Deleveled"));
}
}
您的方法定义为
公共静态bool IsPalindrome(字符串字)
这意味着它必须返回一个布尔值(true或false)
实际上,您没有返回任何内容,只是将其写入控制台,这就是您的错误所在-您没有返回值
您需要输入返回true
或返回false在代码中添加code>,这样通过该方法的每个可能路径都会返回您在方法签名中指定的bool
这给您带来了另一个问题,因为您正在执行Console.WriteLine(),其中是IsPalindrome方法的返回值。由于您返回的是bool
,因此将其写入控制台很奇怪。它会起作用,但更好的方法是调用如下方法:
var isPalindrome = Palindrome.IsPalindrome("Deleveled");
if (isPalindrome == true)
{
Console.WriteLine("It IS a palindrome!");
}
请注意,if(isAlindrome==true)
可以缩短为if(isAlindrome)
OO编程的一个核心方面是SOLID,这是编写代码的一些指导原则。其中之一是单一责任原则,这基本上意味着您应该尝试让代码的某些部分只做一件事
因此,您的isAlindrome最好只做一件事——如果单词是回文,则返回true或false——而不要做其他事情,例如向控制台写入。将其留给调用该方法的代码
当您的方法意外返回false时,只是一个提示-Racecar
与Racecar
不同-您必须对该案例采取一些措施。一种快速的方法是使用ToUpper()
将值转换为大写,然后再反转并进行比较。您的方法应该返回bool
,而不是写入控制台。试试看:
public static bool IsPalindrome(string word)
{
char[] temp = word.ToCharArray();
Array.Reverse(temp);
string emordnilap = new string(temp);
if(word.Equals(emordnilap)){
return true;
}
else{
return false;
}
}
此方法可以采用的每个路径都必须返回一个布尔值:
using System;
public class Palindrome
{
public static bool IsPalindrome(string word)
{
char[] temp = word.ToCharArray();
Array.Reverse(temp);
string emordnilap = new string(temp);
if(word.Equals(emordnilap))
{
return true;
}
else
{
return false;
}
}
public static void Main(string[] args)
{
//The ToString() converts your boolean to a string
Console.WriteLine(Palindrome.IsPalindrome("Deleveled").ToString());
}
}
尝试更容易理解地命名变量。这将使你的生活更容易,如果你进入更大的项目。请参见D
字符不等于D
字符。您应该忽略用例比较。所有代码都可以写在一行中:Console.WriteLine(word.Equals(word.Reverse(),StringComparison.CurrentCultureIgnoreCase))
需要使用return语句从方法返回值在isAlindrome()中没有返回值return
<代码>返回单词.Equals(emornilap)代码>?不管怎样,还是投票通过了谢谢你的反馈。我应该返回true或false而不是console。感谢You@RomainB. 是的,在更改return语句之后,我得到了输出。感谢您的反馈,在将console.WriteLine更改为返回true和false后,它现在可以工作了。谢谢