我正在學習 C#,但我只是完成了一些簡單的任務,即創建回文函式。我決定將字串更改為 char 陣列,然后使用 reverse 方法并將初始 char 陣列與反轉的陣列進行比較。但是看起來反向方法在放入 if 陳述句時不起作用,或者我在其他地方犯了錯誤?
void IsPalindrome(string x)
{
bool isEqual = true;
char[] charArr = x.ToCharArray();
char[] reversed = charArr;
Array.Reverse(reversed);
for (int i = 0; i < reversed.Length; i )
{
if (reversed[i] != charArr[i])
{
isEqual = false;
}
}
if (isEqual == true)
{
Console.WriteLine($"True, {x.Length}");
}
else
{
Console.WriteLine($"False, {x.Length}");
}
}
Console.WriteLine("Type a string:");
string? userString = Console.ReadLine();
IsPalindrome(userString);
uj5u.com熱心網友回復:
charArr 和 reversed 指向記憶體中的相同地址。試試這個:
void IsPalindrome(string x)
{
bool isEqual = true;
char[] reversed = x.ToCharArray();
Array.Reverse(reversed);
for (int i = 0; i < reversed.Length; i )
{
if (reversed[i] != x[i])
{
isEqual = false;
}
}
if (isEqual == true)
{
Console.WriteLine($"True, {x.Length}");
}
else
{
Console.WriteLine($"False, {x.Length}");
}
}
Console.WriteLine("Type a string:");
string? userString = Console.ReadLine();
IsPalindrome(userString);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443581.html
