初學者,一直在做簡易的一個計算器。現在做成了可以運行無報錯。但是每次到運算結果時無結果,而且提示有一個地方有問題。
看了網上很多相關的問題還是出錯。。求大佬們幫忙看看該咋改
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Compute : Form
{
private string s;
private double num1 = 0;
private double num2 = 0;
Button btn;
public Compute ()
{
InitializeComponent ();
}
private void btnNumber_Click (object sender,EventArgs e)
{
btn = (Button) sender;
txtDisplay.Text = txtDisplay.Text + btn.Text;
}
private void btnOp_Click(object sender,EventArgs e)
{
btn = (Button) sender;
if(btn.Name != "btnSign")
{
num1 =Convert.ToDouble (txtDisplay.Text);
txtDisplay.Text ="";
s = btn.Name;
}
else
{
num2 =Convert.ToDouble (txtDisplay.Text);
switch(s)
{
case"btnAnd":
txtDisplay.Text = (num1 + num2) .ToString();
break;
case"btnSubstract":
txtDisplay.Text = (num1 - num2) .ToString();
break;
case"btnMultiply":
txtDisplay.Text = (num1 * num2) .ToString();
break;
case"btnDivide":
if(num2 == 0)
MessageBox.Show("除數不能為零!");
else
txtDisplay.Text = (num1 / num2) .ToString();
break;
}
}
}
private void btnC_Click(object sender, EventArgs e)
{
txtDisplay.Text = "";
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
uj5u.com熱心網友回復:
錯誤資訊已經提示:格式不正確,不能轉換。大多數情況 是 空值問題。
加個空判斷
uj5u.com熱心網友回復:
格式轉換問題,建議txtDisplay.Text = "";不要為空,設定成0uj5u.com熱心網友回復:
看你自己輸入的啥是不是數字,建議使用Double.TryParse替代Convert.ToDoubleuj5u.com熱心網友回復:
我用了一下這個,可以運行也沒有后續報錯了。但還是沒有運行結果。
我的數字類按鈕name都設定是number1、number2之類的
而不是num1、num2
因為我之前在代碼里寫number1 這兩行一直會報錯 然后寫了num1就不會
我不知道是不是和這個有關系。。
uj5u.com熱心網友回復:
錯誤資訊已經提示:格式不正確,不能轉換。
大多數情況 是 空值問題。
加個空判斷
if(txtDisplay.Text.Trim()!="")
{
try
{
num1 =Convert.ToDouble (txtDisplay.Text);
}catch{
//輸入格式不正確
num1=0;
}
finally{
txtDisplay.Text ="";
s = btn.Name;
}
}
else
{
//空值
s = btn.Name;
num1=0;
}
我用了一下這個,可以運行也沒有后續報錯了。但還是沒有運行結果。
我的數字類按鈕name都設定是number1、number2之類的
而不是num1、num2
因為我之前在代碼里寫number1 這兩行一直會報錯 然后寫了num1就不會
我不知道是不是和這個有關系。。
你這句還是沒結果 ,把我搞暈了。。。
if(btn.Name != "btnSign")
{
txtDisplay.Text ="";
}
如果 btn name 不等于 btnSign,不就是沒結果么。。。上面代碼你自己寫的邏輯。。。
uj5u.com熱心網友回復:
養成一個好習慣,多加注釋。uj5u.com熱心網友回復:
if(btn.Name != "btnSign")
{
num1 =Convert.ToDouble (txtDisplay.Text);
txtDisplay.Text ="";
s = btn.Name;
}
else
{
num2 =Convert.ToDouble (txtDisplay.Text);
switch(s)
{
case"btnAnd":
txtDisplay.Text = (num1 + num2) .ToString();
break;
case"btnSubstract":
txtDisplay.Text = (num1 - num2) .ToString();
break;
case"btnMultiply":
txtDisplay.Text = (num1 * num2) .ToString();
break;
case"btnDivide":
if(num2 == 0)
MessageBox.Show("除數不能為零!");
else
txtDisplay.Text = (num1 / num2) .ToString();
break;
}
}
你的邏輯錯了啊,如果 btn.name 不等于 btnSign,不就是沒結果么。
你按其他的操作鍵btnAnd、btnDivide等等,就都符合btn.name 不等于 btnSign的條件,就會一直沒結果。
uj5u.com熱心網友回復:
if(btn.Name != "btnSign")
{
num1 =Convert.ToDouble (txtDisplay.Text);
txtDisplay.Text ="";
s = btn.Name;
}
else
{
num2 =Convert.ToDouble (txtDisplay.Text);
switch(s)
{
case"btnAnd":
txtDisplay.Text = (num1 + num2) .ToString();
break;
case"btnSubstract":
txtDisplay.Text = (num1 - num2) .ToString();
break;
case"btnMultiply":
txtDisplay.Text = (num1 * num2) .ToString();
break;
case"btnDivide":
if(num2 == 0)
MessageBox.Show("除數不能為零!");
else
txtDisplay.Text = (num1 / num2) .ToString();
break;
}
}
你的邏輯錯了啊,如果 btn.name 不等于 btnSign,不就是沒結果么。
你按其他的操作鍵btnAnd、btnDivide等等,就都符合btn.name 不等于 btnSign的條件,就會一直沒結果。
我想問下 如果是if(btn.Name != "btnSign")這句有問題該怎么改。。。因為我們學校的書上這樣寫是可以生效的,但是我這樣寫就不行。。有點一頭霧水。。
uj5u.com熱心網友回復:
if(btn.Name != "btnSign")
{
num1 =Convert.ToDouble (txtDisplay.Text);
txtDisplay.Text ="";
s = btn.Name;
}
else
{
num2 =Convert.ToDouble (txtDisplay.Text);
switch(s)
{
case"btnAnd":
txtDisplay.Text = (num1 + num2) .ToString();
break;
case"btnSubstract":
txtDisplay.Text = (num1 - num2) .ToString();
break;
case"btnMultiply":
txtDisplay.Text = (num1 * num2) .ToString();
break;
case"btnDivide":
if(num2 == 0)
MessageBox.Show("除數不能為零!");
else
txtDisplay.Text = (num1 / num2) .ToString();
break;
}
}
你的邏輯錯了啊,如果 btn.name 不等于 btnSign,不就是沒結果么。
你按其他的操作鍵btnAnd、btnDivide等等,就都符合btn.name 不等于 btnSign的條件,就會一直沒結果。
我想問下 如果是if(btn.Name != "btnSign")這句有問題該怎么改。。。因為我們學校的書上這樣寫是可以生效的,但是我這樣寫就不行。。有點一頭霧水。。
你把條件改成if(btn.Name != "btnSign")。這樣你按加減乘除那些運算子應該就會有結果了,具體要設定什么條件要看你自己的需求
uj5u.com熱心網友回復:
養成一個好習慣,多加注釋.uj5u.com熱心網友回復:
論壇里那么多計算器,搜索一下,把你的改改吧uj5u.com熱心網友回復:
可以除錯一下,看哪個地方有問題uj5u.com熱心網友回復:
報這個錯誤,可能是空值或者輸入了非數字類的引數uj5u.com熱心網友回復:
加注釋。養成好習慣??,可以斷點debug啊。uj5u.com熱心網友回復:
可以參考下我的博客,里面有c#的四則運算uj5u.com熱心網友回復:
論壇里搜一下,參考下吧uj5u.com熱心網友回復:
既然是計算肯定是數字,先判斷是否為空,在判斷參與運算的引數是否是數字uj5u.com熱心網友回復:
這個,我建議你去問度娘(百度)#^_^#uj5u.com熱心網友回復:
看你自己輸入的啥是不是數字,建議使用Double.TryParse替代Convert.ToDouble轉載請註明出處,本文鏈接:https://www.uj5u.com/net/66477.html
標籤:C#
上一篇:一個例外
