为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 for 循环选择了错误的 IF 语句路径?

为什么 for 循环选择了错误的 IF 语句路径?

C#
素胚勾勒不出你 2023-04-16 09:56:42
所以我正在做一个在线编码挑战,遇到了这个让我难过的问题:这是我的代码: static void Main(String[] args)        {            int noOfRows = Convert.ToInt32(Console.ReadLine());            for (int i = 0; i < noOfRows; i++)            {                string odds = "";                string evens = "";                //get the input word from console                string word = Console.ReadLine();                for (int j = 0; j < word.Length; j++)                {                    //if the string's current char is even-indexed...                    if (word[j] % 2 == 0)                    {                        evens += word[j];                                           }                    //if the string's current char is odd-indexed...                    else if (word[j] % 2 != 0)                    {                        odds += word[j];                    }                                   }                //print a line with the evens + odds                Console.WriteLine(evens + " " + odds);            }        }本质上,这个问题要我从控制台行获取字符串并在左侧打印偶数索引字符(从 index=0 开始),后跟一个空格,然后是奇数索引字符。所以当我尝试“Hacker”这个词时,我应该看到打印为“Hce akr”的行。当我调试它时,我看到代码成功地将字母'H'放在左边(因为它是index = 0,因此是偶数),并将字母'a'放在右边(奇数索引)。但是当它到达字母“c”时,它不是通过第一个 IF 路径(偶数索引),而是跳过它并转到奇数索引路径,并将其放在右侧?有趣的是,当我尝试“Rank”这个词时,它工作正常并打印出正确的语句:“Rank”,但其他词却没有。我得到不同的结果真是奇怪。我错过了什么?
查看完整描述

3 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

word[j]是字符串中的一个字符;j是您要检查其均匀度的索引。



查看完整回答
反对 回复 2023-04-16
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

if (j%2)应该提供正确的路径。您使用的if( word[j] %2)是对字符而不是索引进行模块化运算。最有可能对 ASCII 值使用模数。希望这可以帮助。



查看完整回答
反对 回复 2023-04-16
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

你想检查索引是否偶数,但你比较word[j] % 2 == 0哪个不是索引。你应该做什么:

if(j % 2 == 0){

}


查看完整回答
反对 回复 2023-04-16
  • 3 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信