• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed C# Suma stringów jako liczba !

Object Storage Arubacloud
0 głosów
415 wizyt
pytanie zadane 1 września 2017 w C# przez MR.X Użytkownik (860 p.)
zamknięte 1 września 2017 przez MR.X

Witam

Próbuję zaimplementować następującą metodę. Jako parametry przyjmuje ona dwa stringi które moga być liczbami od "0" do "9".
Część testów przechodzi pomyślne lecz mam problem System.OverflowException.
 

        

        public static string sumStrings(string a, string b)
        {
            for (int i = 0; i < a.Length-1; i++)
            {
                if (a[i] == '0')
                {
                    a = a.Remove(i, 1);
                }
                else
                {
                    break;
                }
            }
            for (int i = 0; i < b.Length-1; i++)
            {
                if (b[i] == '0')
                {
                    b = b.Remove(i, 1);
                }
                else
                {
                    break;
                }
            }
            return (UInt64.Parse(a) + UInt64.Parse(b)).ToString();



Problem polega na tym, że gdy odpalimy następujący Test:

Test.assertEquals(sumStrings('712569312664357328695151392712569312664357328695151392', '1'), '712569312664357328695151392712569312664357328695151393');


Program go nie przejdzie, gdyż pojawi się System.OverflowException.

Prosiłbym o jakieś wskazówki :)

komentarz zamknięcia: Znalazłem odpowiedź
komentarz 1 września 2017 przez Jakub 0 Pasjonat (23,120 p.)
włóż kod źródłowy do funkcji 'code' i wybierz C# . Po za tym w regulaminie pisze by nie używać słów pomocy, problem itp. w temacie pytania !
komentarz 5 września 2017 przez pulson666 Stary wyjadacz (12,560 p.)
Możesz zrobić to na int a następnie zrobić .tostring()

2 odpowiedzi

0 głosów
odpowiedź 1 września 2017 przez CjanciK Bywalec (2,970 p.)
Cześć, skoro będzie to liczba od 0-9 nie możesz parametrów metody ustawić na int ?
komentarz 1 września 2017 przez MR.X Użytkownik (860 p.)
Właśnie chodzi o to, żeby zaimplementować taką metodę, która będzie konwertowała te stringi na liczby i zwracała ich sumę w postaci stringa.
komentarz 1 września 2017 przez CjanciK Bywalec (2,970 p.)
Przy podawaniu parametrów do funkcji próbowałeś podać te stringi w " ", a nie w ' ' ?
0 głosów
odpowiedź 1 września 2017 przez MR.X Użytkownik (860 p.)

Udało się rozwiązać problem. Kod powinien wyglądać następująco:

 

        public static string sumStrings(string a, string b)
        {
            if (a.Length != 1)
            {
                a = a.TrimStart('0');
                if (a.Length == 0)
                {
                    a = "0";
                }
            }

            if (b.Length != 1)
            {
                b = b.TrimStart('0');
                if (b.Length == 0)
                {
                    b = "0";
                }
            }
            return (BigInteger.Parse(a) + BigInteger.Parse(b)).ToString();
        }

Być może uda się to zrobić w bardziej optymalny sposób, ale działa :)

Podobne pytania

–1 głos
1 odpowiedź 425 wizyt
pytanie zadane 20 stycznia 2018 w C# przez Mesne191 Początkujący (460 p.)
+1 głos
2 odpowiedzi 385 wizyt
pytanie zadane 21 października 2021 w C# przez Kamirru9 Początkujący (300 p.)
0 głosów
0 odpowiedzi 130 wizyt
pytanie zadane 28 kwietnia 2021 w C# przez Just a normal user Nowicjusz (120 p.)

92,551 zapytań

141,393 odpowiedzi

319,522 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...