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

Problem z kalkulatorem C#

Object Storage Arubacloud
0 głosów
188 wizyt
pytanie zadane 12 maja 2019 w C# przez Nicekovsky Dyskutant (9,820 p.)
edycja 12 maja 2019 przez Nicekovsky

Witam, chciałem spróbować napisać prosty kalkulator (jako nauka języka) niestety, podczas rozbudowania jego wersji co chwilę wywala mi błąd --> "System.ArgumentNullException: „Wartość nie może być zerowa.
Nazwa parametru: String”"

 

case '*':
textBox1.Text = (int.Parse(LiczbaPierwsza) * int.Parse(LiczbaDruga)).ToString();
break;

 

Gdy sprawdzam to na początku jest zmienna -"LiczbaPierwsza" ale po kliknięciu np. dodawania to całość idzie do zmiennej - "LiczbaDruga" i nie wiem jak to rozwiązać. no

 

 private void Dzialanie (int liczba)
        {
            if (RodzajDzialania == ' ')
            {
                LiczbaPierwsza += liczba;
                textBox1.Text = LiczbaPierwsza;
            }
            else
            {
                LiczbaDruga += liczba;
                textBox1.Text = LiczbaDruga;
            }
        }

Program działa dopiero po 2 kliknięcia równania :/

komentarz 12 maja 2019 przez aeragram Obywatel (1,760 p.)
Cześć,

Jeżeli to możliwe, czy możesz pokazać cały kod ?

Pozdrawiam aeragram
komentarz 12 maja 2019 przez Nicekovsky Dyskutant (9,820 p.)

Mogę :)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
        string LiczbaPierwsza, LiczbaDruga;
        char RodzajDzialania;

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e) //Przycisk - "Kliknij mnie"
        {
            MessageBox.Show("Kliknąłeś mnie :o"); //Reakcja na klikniecie przyciska
        }

        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {

        }

        private void aboutToolStripMenuItem_Click(object sender, EventArgs e) // About w zakladce Informacje
        {
      
		}

        private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void openFileDialog1_FileOk_1(object sender, CancelEventArgs e)
        {
		
	}

        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged_1(object sender, EventArgs e)
        {
            
        }

        private void dateTimePicker1_ValueChanged_1(object sender, EventArgs e)
        {

        }

        private void TextBox1_TextChanged_2(object sender, EventArgs e)
        {

        }

        private void PlikToolStripMenuItem_Click(object sender, EventArgs e)
        {

        }

        private void Button13_Click(object sender, EventArgs e)
        {
        switch (RodzajDzialania)
            {
                case ('+'):
                    textBox1.Text = (int.Parse(LiczbaPierwsza) + int.Parse(LiczbaDruga)).ToString();
                    break;
                case ('-'):
                    textBox1.Text = (int.Parse(LiczbaPierwsza) - int.Parse(LiczbaDruga)).ToString();
                    break;
                case ('*'):
                    textBox1.Text = (int.Parse(LiczbaPierwsza) * int.Parse(LiczbaDruga)).ToString();
                    break;
                case ('/'):
                    textBox1.Text = (int.Parse(LiczbaPierwsza) / int.Parse(LiczbaDruga)).ToString();
                    break;

            }
            LiczbaPierwsza = "";
            LiczbaDruga = "";
            RodzajDzialania = ' ';
        }

        private void Button11_Click(object sender, EventArgs e)
        {
            RodzajDzialania = '-';
            textBox1.Text = "";
        }

        private void Button7_Click(object sender, EventArgs e)
        {
            RodzajDzialania = '+';
            textBox1.Text = "";
        }

        private void Button5_Click(object sender, EventArgs e)
        {
            Dzialanie(7);
        }

        private void Button6_Click(object sender, EventArgs e)
        {
            Dzialanie(8);
        }

        private void Button12_Click(object sender, EventArgs e)
        {
            Dzialanie(6);
        }

        private void Button8_Click(object sender, EventArgs e)
        {
            Dzialanie(2);
        }

        private void Button10_Click(object sender, EventArgs e)
        {
            Dzialanie(5);
        }

        private void Button9_Click(object sender, EventArgs e)
        {
            Dzialanie(4);
        }

        private void Button4_Click(object sender, EventArgs e)
        {
            Dzialanie(1);
        }

        private void Button16_Click(object sender, EventArgs e)
        {
            Dzialanie(0);
        }

        private void Button3_Click(object sender, EventArgs e)
        {
            Dzialanie(9);
        }

        private void Button14_Click(object sender, EventArgs e)
        {
            RodzajDzialania = '*';
            textBox1.Text = "";
        }

        private void Button2_Click(object sender, EventArgs e)
        {
            Dzialanie(3);
        }

        private void Button15_Click(object sender, EventArgs e)
        {
            RodzajDzialania = '/';
            textBox1.Text = "";

        }
        private void Dzialanie (int liczba)
        {
            if (RodzajDzialania == ' ')
            {
                LiczbaPierwsza += liczba;
                textBox1.Text = LiczbaPierwsza;
            }
            else
            {
                LiczbaDruga += liczba;
                textBox1.Text = LiczbaDruga;
            }
        }
    }
}

 

Niektóre linijki są puste bo kiedyś spełniały jakąś funkcję ale je usunąłem 

1 odpowiedź

0 głosów
odpowiedź 12 maja 2019 przez aeragram Obywatel (1,760 p.)
wybrane 18 maja 2019 przez Nicekovsky
 
Najlepsza

Cześć,

Wprawdzie dopiero się uczę języka, ale wydaje mi się, że problem jest taki:

1. deklaracja zmiennej char RodzajDzialania (linia 21) bez zadeklarowania wartości początkowej powoduje, że w zmiennej RodzajDzialania znajduje się na początku domyślna wartość dla char czyli '\0' a nie ' '.

2. po naciśnięciu buttona z liczbą wywołujesz metodę Dzialanie, sprawdzenie warunku RodzajDzialania==' ' (linia 182) daje więc wartość false i przechodzimy do else, gdzie do LiczbaDruga zostanie dodana zmienna liczba.

3. Naciśnięcie Button13 i wykonanie metody Button13_Click (linia 83) zapewne powoduje błąd, ponieważ w LiczbaPierwsza nie ma żadnej wartości (a dokladnie w LiczbaPierwsza nie ma nawet adresu żadnego stringa, tylko jest null)

Pozdrawiam aeragram

Podobne pytania

0 głosów
4 odpowiedzi 292 wizyt
pytanie zadane 1 sierpnia 2015 w C i C++ przez Matlawsky Nowicjusz (160 p.)
–2 głosów
3 odpowiedzi 835 wizyt
pytanie zadane 9 lutego 2019 w C# przez noname3 Obywatel (1,180 p.)
0 głosów
0 odpowiedzi 202 wizyt
pytanie zadane 10 marca 2018 w C# przez leopard2k Nowicjusz (120 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...