You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现两位数的数字交换并判断交换后数值更大?解决代码类型不匹配及数字拼接错误问题

解决两位数交换后比较大小的问题

嘿,我明白你遇到的困扰了!你现在的问题出在如何正确计算交换后的整数上,其实根本不用绕字符串,用简单的整数运算就能完美解决,而且还能避免类型不匹配的问题。

问题根源

你之前尝试用字符串拼接来得到交换后的数字,但要么遇到字符串和整数无法直接比较的问题,要么直接把两个数字相加得到错误结果(比如5+2=7而不是52)。其实我们可以用数学运算直接构造交换后的数字:把个位数字乘以10,再加上十位数字,这样就能得到交换后的两位数了。

修正后的代码

这里给你调整后的C#代码,逻辑清晰还不会出错:

public bool IsSwappedGreater(int num)
{
    // 提取十位数字(比如25的话,25/10=2)
    int firstDigit = num / 10;
    // 提取个位数字(25%10=5)
    int secondDigit = num % 10;
    // 构造交换后的数字:个位*10 + 十位 → 5*10+2=52
    int swappedNum = secondDigit * 10 + firstDigit;
    // 直接比较两个整数,返回结果
    return swappedNum > num;
}

为什么这个方法可行?

  • 对于两位数来说,十位数字的权重是10,所以把原来的个位数字放到十位上,只需要乘以10,再加上原来的十位数字(现在变成个位),就能得到正确的交换后数字。
  • 全程用整数运算,没有类型转换的麻烦,代码更高效也更易读。

测试示例

  • 输入25:交换后是52,52>25,返回true,符合你的需求。
  • 输入52:交换后是25,25<52,返回false。
  • 输入33:交换后还是33,返回false(因为不满足“更大”的条件)。

如果你非要用字符串的方式实现(虽然没必要),也可以这样写来避免类型问题:

public bool IsSwappedGreater(int num)
{
    int firstDigit = num / 10;
    int secondDigit = num % 10;
    // 先把两个数字转成字符串再拼接,再转成整数
    int swappedNum = int.Parse(secondDigit.ToString() + firstDigit.ToString());
    return swappedNum > num;
}

但显然第一种整数运算的方式更简洁高效。

内容的提问来源于stack exchange,提问作者Connor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 20:23:12