亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

“==”總是返回真。字謎程序

“==”總是返回真。字謎程序

C#
慕姐8265434 2021-10-24 19:31:26
我做了一個簡單的函數,它通過對排序后的值進行排序和比較來檢查兩個單詞是否是變位詞,但是即使單詞不是變位詞,該程序也始終返回 true。如果我刪除 .ToString() 它評估為假。知道為什么要這樣做以及有關如何解決此問題的任何想法嗎?public bool anagram(string word1, string word2)    {        char[] word1Arr = word1.ToArray();        char[] word2Arr = word2.ToArray();        Array.Sort(word1Arr);        Array.Sort(word2Arr);        Console.WriteLine(word1Arr);        Console.WriteLine(word2Arr);        if (word1Arr.ToString() == word2Arr.ToString())        {            return true;        }        else        {            return false;        }    }
查看完整描述

2 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

代替

if (word1Arr.ToString() == word2Arr.ToString())

if (word1Arr.SequenceEqual(word2Arr))

比較數組的內容 - 因為word1Arr.ToString()返回"System.Char[]"和您的比較結果為

"System.Char[]" == "System.Char[]"

永遠是真的


查看完整回答
反對 回復 2021-10-24
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

您還可以使用此比較:

if(new string(word1Arr) == new string (word2Arr))

ToString方法在char[]返回類型名稱時具有默認實現System.Char[],這就是為什么當您比較兩個char[].

與另一個答案相比:我的方法創建了兩個額外的string類實例,而另一個答案在不創建額外對象的情況下比較數組。


查看完整回答
反對 回復 2021-10-24
  • 2 回答
  • 0 關注
  • 260 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號