Как обратить число как целое число, а не как строку? - PullRequest
12 голосов
/ 11 января 2010

Я столкнулся с вопросом "Как можно повернуть число как целое число, а не как строку?" Может ли кто-нибудь помочь мне узнать ответ? Сторнирование должно полностью изменить десятичные цифры числа, то есть использовать основание 10.

Ответы [ 17 ]

0 голосов
/ 18 октября 2018
    static void Main(string[] args)
    {
        Console.WriteLine("Please enter number");
        int number = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine(ReverseLoop(number));
        Console.WriteLine(ReverseRecursive(number));
        Console.ReadLine();
    }

    public static int ReverseRecursive(int number)
    {
        int remainder = number % 10;
        number = number / 10;
        if (number < 1)
            return remainder;
        return ReverseRecursive(number) + remainder * Convert.ToInt32(Math.Pow(10, number.ToString().Length));
    }

    public static int ReverseLoop(int number)
    {
        int reversed = 0;
        while (number > 0)
        {
            reversed = reversed * 10 + (number % 10);
            number = number / 10;
        }
        return reversed;
    }
0 голосов
/ 08 декабря 2018

новый:

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        int i = 234;
        int j = -123;
        Console.WriteLine(reverse(i));
        Console.WriteLine(reverse(j));
    }

    static int reverse(int i)
    {
        int sign = i / Math.Abs(i);
        var abs = string.Concat(Math.Abs(i).ToString().Reverse());
        return int.Parse(abs) * sign;
    }
}

https://dotnetfiddle.net/VGJJFf

0 голосов
/ 21 мая 2018
    public static void Main(string[] args)
    {
        int reversed = Reverse(-7360);
    }

    public static int Reverse(int number, int left = 0, int right = 0)
    {
        if (number == 0) return left + right;
        return Reverse(number / 10, left * 10 + right * 10, number % 10);
    }
0 голосов
/ 05 января 2018
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();
0 голосов
/ 21 мая 2017

В соответствии с комментарием 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();
0 голосов
/ 07 апреля 2017
int x = 9876543;
char[] arr = x.ToString().ToCharArray();
Array.Reverse(arr);
Console.WriteLine(int.Parse(new string(arr)));
0 голосов
/ 24 ноября 2016

самое короткое решение:

        int reverse=0;
        int number = 21;

        while (number > 0)
        {
            reverse = number % 10;
            Console.Write(reverse);
            number = number / 10;  
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...