用List寫小算盤(先乘除後加減) C#
兩年多年前,初踏入「碼農」「程式猿」的世界,從零開始學習
一開始的VB ,後來的C# ,到最近學著JAVA
後來明白,專精一個程式,懂了之後,再學其它程式就沒有那麼難了。
今天終於,把計算機這個作業完成啦~
不過小數點,未完成....
還是菜菜菜時,用if .... 來寫
後來用 case ,再來用陣列
但寫到最後都失敗
後來因為一位新來的同事一句話,點醒了我
對!用List
果真,回家後,馬上試著寫
寫出一版,雖然自已測試沒出現bug
明天請同事幫我試試~
private void equal_Click(object sender, EventArgs e)
{
String value = textBox1.Text.Replace(" ", "");
char[] separators = { '+', '-', '*', '/' };
String[] sub = value.Split(separators);
List<String> substrings = new List<String>(sub);
//進入運算
cc(substrings, substrings1 );
substrings1.Clear();
textBox1.Text += "\r\n\r\n" + substrings[0].ToString();
}
Double temp1;
public void cc(List<String> substrings, List<String> substrings1)
{
//依序先乘除後加減
List<string> ho = new List<string>(new string[] { "*", "/", "+", "-" });
//依序先乘除後加減
foreach (string hh in ho)
{
// 尋找List有沒有某某值,若有則進入迴圈
while (substrings1.Contains(hh))
{
//某值在数组中的索引
int i = substrings1.IndexOf(hh);
int ii = substrings1.IndexOf(hh)+1;
temp1 = 0;
string u = substrings[i];
string q = substrings[ii];
if (hh == "*")
{
temp1 = (Convert.ToDouble(u)) * (Convert.ToDouble(q));
}
else if (hh == "/")
{
temp1 = (Convert.ToDouble(u)) / (Convert.ToDouble(q));
}
else if (hh == "+")
{
temp1 = (Convert.ToDouble(u)) + (Convert.ToDouble(q));
}
else
{
temp1 = (Convert.ToDouble(u)) - (Convert.ToDouble(q));
}
substrings[i] = Convert.ToString(temp1);
//清除已計算過的數值
substrings.RemoveAt(ii);
substrings1.RemoveAt(i);
if (substrings1.Contains(hh))
{
continue;//若還有相同的運算符,回到while
}
}
}
}
一開始的VB ,後來的C# ,到最近學著JAVA
後來明白,專精一個程式,懂了之後,再學其它程式就沒有那麼難了。
今天終於,把計算機這個作業完成啦~
不過小數點,未完成....
還是菜菜菜時,用if .... 來寫
後來用 case ,再來用陣列
但寫到最後都失敗
後來因為一位新來的同事一句話,點醒了我
對!用List
果真,回家後,馬上試著寫
寫出一版,雖然自已測試沒出現bug
明天請同事幫我試試~
private void equal_Click(object sender, EventArgs e)
{
String value = textBox1.Text.Replace(" ", "");
char[] separators = { '+', '-', '*', '/' };
String[] sub = value.Split(separators);
List<String> substrings = new List<String>(sub);
//進入運算
cc(substrings, substrings1 );
substrings1.Clear();
textBox1.Text += "\r\n\r\n" + substrings[0].ToString();
}
Double temp1;
public void cc(List<String> substrings, List<String> substrings1)
{
//依序先乘除後加減
List<string> ho = new List<string>(new string[] { "*", "/", "+", "-" });
//依序先乘除後加減
foreach (string hh in ho)
{
// 尋找List有沒有某某值,若有則進入迴圈
while (substrings1.Contains(hh))
{
//某值在数组中的索引
int i = substrings1.IndexOf(hh);
int ii = substrings1.IndexOf(hh)+1;
temp1 = 0;
string u = substrings[i];
string q = substrings[ii];
if (hh == "*")
{
temp1 = (Convert.ToDouble(u)) * (Convert.ToDouble(q));
}
else if (hh == "/")
{
temp1 = (Convert.ToDouble(u)) / (Convert.ToDouble(q));
}
else if (hh == "+")
{
temp1 = (Convert.ToDouble(u)) + (Convert.ToDouble(q));
}
else
{
temp1 = (Convert.ToDouble(u)) - (Convert.ToDouble(q));
}
substrings[i] = Convert.ToString(temp1);
//清除已計算過的數值
substrings.RemoveAt(ii);
substrings1.RemoveAt(i);
if (substrings1.Contains(hh))
{
continue;//若還有相同的運算符,回到while
}
}
}
}
留言
張貼留言