2 回答

TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
我不是 100% 確定,但我相當(dāng)確定這與您的變量operater是 anint但您正在為其分配一個(gè)字符的事實(shí)有關(guān)(這是有效的 - 字符可以分配給 int)然后比較它回到整數(shù)(例如做1 == '1')
int x = '1';
Console.WriteLine(x); // outputs 49
Console.WriteLine(x == 1); // outputs false
因此,要修復(fù)它,請(qǐng)使用 switch 中的字符:
switch(operater){
case '1': ...
}
或者分配整數(shù) 1,2,3,4 而不是字符 '1','2,'3','4'
private void btnadd_Click(object sender, RoutedEventArgs e)
{
num01 = Convert.ToDouble(txtcalcdisplay.Text);
txtcalcdisplay.Text = "";
operater = 2; // here
}

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
因此,在您操作的點(diǎn)擊處理程序(藥粥+, - ,*,/等)你是你設(shè)定operater變量角色'1','2'等好了,你的operater變量是一個(gè)int。但是等等,您不應(yīng)該將 a 分配char給 anint嗎?!好吧,編譯器在這里做了一個(gè)隱式轉(zhuǎn)換(語言規(guī)范說它應(yīng)該)。
因此,當(dāng)您這樣做時(shí),最終會(huì)發(fā)生的operater = '1'是operater分配了 49 ('1'的 ASCII 值)。然后當(dāng)你到達(dá)你的 equals 按鈕點(diǎn)擊處理程序時(shí),它會(huì)點(diǎn)擊那個(gè) switch 語句。你猜怎么著?你沒有 49 的情況。所以什么也沒發(fā)生,你一直看到你的第二個(gè)數(shù)字作為屏幕上的文本。
因此,要修復(fù)它,請(qǐng)刪除您operater在操作員處理程序中分配給的數(shù)字周圍的單引號(hào)。IE:
private void btnsubtract_Click(object sender, RoutedEventArgs e)
{
num01 = Convert.ToDouble(txtcalcdisplay.Text);
txtcalcdisplay.Text = "";
operater = 1; // <-- change this line to be like this, removed the single quotes
}
- 2 回答
- 0 關(guān)注
- 230 瀏覽
添加回答
舉報(bào)