我遇到了一个问题:“如何将数字反转为整数而不是字符串?”任何人都可以请帮我找出答案。如何将数字反转为整数而不是字符串?
回答
这应做到:
int n = 12345;
int left = n;
int rev = 0;
while(left>0)
{
r = left % 10;
rev = rev * 10 + r;
left = left/10; //left = Math.floor(left/10);
}
Console.WriteLine(rev);
非常感谢,但我认为当给定的数字在0结束时这将不起作用。就像40 – 2010-01-11 13:45:27
它仍然可以用数字0 – jerjer 2010-01-12 02:04:29
using System;
public class DoWhileDemo {
public static void Main() {
int num;
int nextdigit;
num = 198;
Console.WriteLine("Number: " + num);
Console.Write("Number in reverse order: ");
do {
nextdigit = num % 10;
Console.Write(nextdigit);
num = num/10;
} while(num > 0);
Console.WriteLine();
}
}
是这样的?
public int ReverseInt(int num)
{
int result=0;
while (num>0)
{
result = result*10 + num%10;
num /= 10;
}
return result;
}
作为hackish的一行代码(更新:使用本杰明的评论,以缩短):
num.ToString().Reverse().Aggregate(0, (b, x) => 10 * b + x - '0');
速度更快的一个,和一季度班轮:
public static int ReverseOneLiner(int num)
{
for (int result=0;; result = result * 10 + num % 10, num /= 10) if(num==0) return result;
return 42;
}
这不是一条线,因为我必须包括return 42;
。 C#编译器不会让我编译,因为它认为没有代码路径返回值。
P.S.如果你写这样的代码,并且同事抓住它,你应该得到他/她对你做的一切。被警告!
编辑:我想知道关于LINQ单行慢多少是,所以就用下面的基准代码:
public static void Bench(Func<int,int> myFunc, int repeat)
{
var R = new System.Random();
var sw = System.Diagnostics.Stopwatch.StartNew();
for (int i = 0; i < repeat; i++)
{
var ignore = myFunc(R.Next());
}
sw.Stop();
Console.WriteLine("Operation took {0}ms", sw.ElapsedMilliseconds);
}
结果(10^6个随机正INT32范围内的数字):
While loop version:
Operation took 279ms
Linq aggregate:
Operation took 984ms
乘以-1?精确您的问题,请...
事实上,正如我在问题中提到的......我在一个网站上发现了这个问题,他们在那里发表了多个采访问题。所以我也对这个问题感到困惑。 – 2010-01-11 10:49:06
耶!一种闪闪发光的方式。 (不,真的。我希望这是更多的是“我会怎么做?”的问题,不是你真正需要的生产)
public int Reverse(int number) {
return int.Parse(number.ToString().Reverse().Aggregate("", (s,c) => s+c));
}
非常好的解决方案! – Flynn 2012-12-28 16:42:54
你不能。由于计算机在任何情况下都以十六进制表示,所以您需要将数字标记为阿拉伯语格式,这与转换为字符串的语义相同。
@Alex:更准确地说,计算机的位和十六进制是精确的倍数(即:每个十六进制数字的4位组)。但是,如上所示,它仍然可以做数学。 – kriss 2010-04-12 14:30:35
/// <summary>
/// Reverse a int using its sting representation.
/// </summary>
private int ReverseNumber(int value)
{
string textValue = value.ToString().TrimStart('-');
char[] valueChars = textValue.ToCharArray();
Array.Reverse(valueChars);
string reversedValue = new string(valueChars);
int reversedInt = int.Parse(reversedValue);
if (value < 0)
reversedInt *= -1;
return reversedInt;
}
检查下面简单和容易 -
public int reverseNumber(int Number)
{
int ReverseNumber = 0;
while(Number > 0)
{
ReverseNumber = (ReverseNumber * 10) + (Number % 10);
Number = Number/10;
}
return ReverseNumber;
}
旧线,但我没有看到这种变化:
int rev(int n) {
string str = new String(n.ToString().Reverse().ToArray());
return int.Parse(str);
}
我看着以下解决方案。但是当n是负数时怎么样?
比方说,N = -123456
这是一个好办法,我添加到它来处理负数,与假设它会威胁消极麻木了同样的方式。
int reverse = 0;
bool isNegative = false;
if (n < 0)
isNegative = true;
n = Math.Abs(n);
while (n > 0)
{
int rem = n % 10;
reverse = (reverse * 10) + rem;
n = n/10;
}
if (isNegative)
reverse = reverse * (-1);
return reverse;
最短的解决方案:
int reverse=0;
int number = 21;
while (number > 0)
{
reverse = number % 10;
Console.Write(reverse);
number = number/10;
}
int x = 9876543;
char[] arr = x.ToString().ToCharArray();
Array.Reverse(arr);
Console.WriteLine(int.Parse(new string(arr)));
按Pritam Karmakar评论, 是这会不会当给定数量的一端有0工作。 如果您将号码传递为150,则它将返回51而不是051. 因此,我已经按照用户输入写入代码以逆序显示号码,请检查此信息。
int reverseNum = 0, reminder, num;
Console.WriteLine("Enter Number to Reverse:");
int.TryParse(Console.ReadLine(), out num);
bool isZero = false;
int cnt=0;
while (num > 0)
{
reminder = num % 10;
reverseNum = (reverseNum * 10) + reminder;
num = num/10;
if (reverseNum == 0)
isZero = true;
cnt++;
}
if (isZero)
{
Console.WriteLine(reverseNum.ToString().PadLeft(cnt, '0'));
}
else
{
Console.WriteLine(reverseNum);
}
Console.ReadKey();
int sum = 0; int remainder = 0;
int n = 123;
for (int i = n; i > 0; i = i/10)
{
remainder = i % 10;
sum = (sum * 10) + remainder;
}
Console.WriteLine(sum);
Console.ReadLine();
- 1. Excel VBA如何将值视为整数而不是字符串
- 2. 如何将指数数字字符串转换为整数字符串
- 3. 如何将字符串中的数字转换为整数
- 4. 如何将整数值转换为罗马数字字符串?
- 5. 将数字从字符串转换为整数而不使用内置函数
- 6. 将字符串转换为整数而不使用atoi
- 7. 字符串转换为整数而不是双倍
- 8. 如何整数转换为字符串
- 9. 将字符串转换为整数
- 10. Swift:将字符串转换为整数
- 11. 将字符串转换为整数
- 12. 将字符串转换为整数
- 13. 将字符串转换为整数
- 14. 将字符串转换为整数?
- 15. 将字符串转换为整数
- 16. 将整数转换为字符串
- 17. 将字符串转换为整数
- 18. 将整数值转换为字符串
- 19. 将整数转换为字符串-mysql
- 20. 将JavaScript字符串转换为整数
- 21. 将字符串值转换为整数
- 22. 将字符串转换为整数?
- 23. 将整数转换为字符串
- 24. 将字符串转换为整数
- 25. 将字符串转换为整数Android
- 26. 将字符串转换为整数
- 27. 将整数转换为字符串
- 28. 将字符串转换为整数
- 29. 将字符串转换为整数
- 30. 将字符串“09335887170”转换为整数
定义“扭转数为整数” – 2010-01-11 08:50:46
你能更准确? – 2010-01-11 08:50:46
你的意思是:颠倒其十进制表示的数字? – 2010-01-11 08:50:52