找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
發表文章前請先閱讀相關版規尊貴會員無限下載附件搞笑、娛樂、精彩的影片讓你看
神奇寶貝三上fate柯南ntr3d旬果
迷宮都市phoenixe新生vr異塵餘生jac 163miaa 965

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]老夫老妻重返青春

[繁]怪物轉生 Re:Mons

苗栗公館 小貨車停等

【高清繁中】✡ 霹靂

【超清繁中】✡ 霹靂

[繁中]霹靂天機貳 仙
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 2499|回復: 5

[求助] 在web表單做計算機[複製鏈接]

  尊貴會員

小貓喵喵OwO

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
391
積分
1222 點
潛水值
30703 米
發表於 2016-3-13 10:08 PM|顯示全部樓層
本帖最後由 game8412 於 2016-3-13 10:11 PM 編輯

各位大大好 這是我們這禮拜的作業


目前做到這樣

BUTTON1~16的程式碼都一樣 所以先摺疊起來方便截圖

然後執行結果


目前卡在四個運算符號(+-*/)不知道該怎麼寫...
也不知道如何運算TEXTBOX裡的值...
點了25+25後...不知道該怎麼做了
所以想請各位大大能提點小弟一下接下來的作法
...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

inunu 該用戶已被刪除
發表於 2016-3-15 09:48 AM|顯示全部樓層
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
先考慮最簡單的版本
假設使用者只輸入兩個運算元一個運算子
完全就是 25 + 25 EXEC 或是 38 * 16 EXEC 這種模式
先解出運算元1, 再解出運算子, 再解出運算元2
等到按 EXEC 才計算印出結果
這樣能寫出來嗎?

因為後面還要用到堆疊, 依運算元的優先順序進行存放或處理
你可能會直接嚇跑

使用道具檢舉

Rank: 2Rank: 2

帖子
541
積分
212 點
潛水值
13707 米
發表於 2016-3-15 10:09 PM|顯示全部樓層
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             Button1.Click += new EventHandler(this.NumButton_Click); // -> 1
  4.             Button2.Click += new EventHandler(this.NumButton_Click); // -> 2
  5.             Button3.Click += new EventHandler(this.NumButton_Click); // -> 3
  6.             Button4.Click += new EventHandler(this.NumButton_Click); // -> 4
  7.             Button5.Click += new EventHandler(this.NumButton_Click); // -> 5
  8.             Button6.Click += new EventHandler(this.NumButton_Click); // -> 6
  9.             Button7.Click += new EventHandler(this.NumButton_Click); // -> 7
  10.             Button8.Click += new EventHandler(this.NumButton_Click); // -> 8
  11.             Button9.Click += new EventHandler(this.NumButton_Click); // -> 9
  12.             Button10.Click += new EventHandler(this.NumButton_Click); // -> 0
  13.             Button11.Click += new EventHandler(this.NumButton_Click); // -> 00
  14.             Button12.Click += new EventHandler(this.PointBtn_Click);  // -> .
  15.             Button13.Click += new EventHandler(this.OperatorBtn_Click); // -> +
  16.             Button14.Click += new EventHandler(this.OperatorBtn_Click); // -> -
  17.             Button15.Click += new EventHandler(this.OperatorBtn_Click); // -> *
  18.             Button16.Click += new EventHandler(this.OperatorBtn_Click); // -> /
  19.             Button17.Click += new EventHandler(this.CleanBtn_Click); // -> C
  20.             Button18.Click += new EventHandler(this.ExecBtn_Click);  // -> EXEC
  21.         }

  22.         //處理按下數字鍵
  23.         protected void NumButton_Click(object sender, EventArgs e)
  24.         {
  25.             Button bn = new Button();
  26.             bn = (Button)sender;
  27.             TextBox1.Text += bn.Text;
  28.         }

  29.         //處理按下小數點
  30.         protected void PointBtn_Click(object sender, EventArgs e)
  31.         {
  32.             Button bn = new Button();
  33.             bn = (Button)sender;
  34.             if(!CheckPoint(TextBox1.Text) && TextBox1.Text.Length > 0)
  35.             {
  36.                 TextBox1.Text += bn.Text;
  37.             }
  38.         }

  39.         //處理按下 + - * / 運算子
  40.         protected void OperatorBtn_Click(object sender, EventArgs e)
  41.         {
  42.             Button bn = new Button();
  43.             bn = (Button)sender;
  44.             if (!CheckOperator(TextBox1.Text))
  45.             {   //如果沒有運算子則直接加上目前按下的運算子
  46.                 TextBox1.Text += bn.Text;
  47.             }
  48.             else
  49.             {   //如果運算在最後面則不於理會(運算式不完整)
  50.                 if (TextBox1.Text.IndexOf(GetOperator(TextBox1.Text)) == TextBox1.Text.Length - 1) return;
  51.                 //如果已經有了運算子則將該式計算出結果,再加上目前按下的運算子
  52.                 TextBox1.Text = ExecStr(TextBox1.Text) + bn.Text;
  53.             }
  54.         }

  55.         //處理按下 C 清除鍵
  56.         protected void CleanBtn_Click(object sender, EventArgs e)
  57.         {
  58.             TextBox1.Text = "";
  59.         }

  60.         //處理按下 EXEC 鍵(計算)
  61.         protected void ExecBtn_Click(object sender, EventArgs e)
  62.         {
  63.             if (CheckOperator(TextBox1.Text))
  64.             {
  65.                 TextBox1.Text = ExecStr(TextBox1.Text);
  66.             }
  67.         }

  68.         //檢查是否有小數點且位置是否合理?
  69.         private bool CheckPoint(string tx)
  70.         {
  71.             if (tx.IndexOf(".") >= 0)
  72.             {
  73.                 if (!CheckOperator(TextBox1.Text))
  74.                 {
  75.                     return true;
  76.                 }
  77.                 else
  78.                 {
  79.                     string s = GetOperator(TextBox1.Text);
  80.                     string[] str = TextBox1.Text.Split(s.ToCharArray()[0]);
  81.                     if (str[1].IndexOf(".") >= 0)
  82.                     {
  83.                         return true;
  84.                     }
  85.                 }
  86.             }
  87.             return false;
  88.         }

  89.         //檢查是否有運算子?
  90.         private bool CheckOperator(string tx)
  91.         {
  92.             if (tx.IndexOf("+") > 0) return true;
  93.             if (tx.IndexOf("-") > 0) return true;
  94.             if (tx.IndexOf("*") > 0) return true;
  95.             if (tx.IndexOf("/") > 0) return true;
  96.             return false;
  97.         }

  98.         //取得運算子
  99.         private string GetOperator(string tx)
  100.         {
  101.             if (tx.IndexOf("+") > 0) return "+";
  102.             if (tx.IndexOf("-") > 0) return "-";
  103.             if (tx.IndexOf("*") > 0) return "*";
  104.             if (tx.IndexOf("/") > 0) return "/";
  105.             return "";
  106.         }

  107.         //傳回運算式的計算結果(字串型態)
  108.         private string ExecStr(string tx)
  109.         {

  110.             double a = 0;
  111.             double b = 0;
  112.             string restx = "數值錯誤!";
  113.             if (CheckOperator(TextBox1.Text))
  114.             {
  115.                 string s = GetOperator(TextBox1.Text);
  116.                 if (TextBox1.Text.IndexOf(s) == TextBox1.Text.Length - 1)
  117.                     return tx; //運算式不完整則傳回原式
  118.                 string[] str = TextBox1.Text.Split(s.ToCharArray()[0]);
  119.                 //以下兩列程式式檢查任一運算元如不符合數字規則,則傳回錯誤
  120.                 if (!double.TryParse(str[0], out a)) return restx;
  121.                 if (!double.TryParse(str[1], out b)) return restx;
  122.                 switch (s)
  123.                 {
  124.                     case "+":
  125.                         restx = (a + b).ToString();
  126.                         break;
  127.                     case "-":
  128.                         restx = (a - b).ToString();
  129.                         break;
  130.                     case "*":
  131.                         restx = (a * b).ToString();
  132.                         break;
  133.                     case "/":
  134.                         restx = (a / b).ToString();
  135.                         break;
  136.                     default:
  137.                         break;
  138.                 }
  139.             }
  140.             return restx;
  141.         }
複製代碼
這是我樓上大大所說比較簡單的邏輯寫的程式碼。
裡面所有的按鈕的click事件都是自行指定的,且有多個按鈕會指向同一個事件處理函式,這是因為相類似的按鈕只要用一個函式就可以處理了,這種寫法給你參考一下。...
瀏覽完整內容,請先 註冊登入會員
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

  尊貴會員

小貓喵喵OwO

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
391
積分
1222 點
潛水值
30703 米
發表於 2016-3-16 09:26 PM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
inunu 發表於 2016-3-15 09:48 AM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

先考慮最簡單的版本
假設使用者只輸入兩個運算元一個運算子
完全就是 25 + 25 EXEC 或是 38 * 16 EXEC 這種 ...

其實我覺得教授是沒有要我們用到Stack的概念...
...
瀏覽完整內容,請先 註冊登入會員

使用道具檢舉

  尊貴會員

小貓喵喵OwO

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

帖子
391
積分
1222 點
潛水值
30703 米
發表於 2016-3-16 09:30 PM|顯示全部樓層
如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。
rr09192084 發表於 2016-3-15 10:09 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

這是我樓上大大所說比較簡單的邏輯寫的程式碼。
裡面所有的按鈕的click事件都是自行指定的,且有多個按鈕會 ...

...
瀏覽完整內容,請先 註冊登入會員





分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。

使用道具檢舉

inunu 該用戶已被刪除
發表於 2016-3-18 05:51 PM|顯示全部樓層
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
game8412 發表於 2016-3-16 09:26 PM
下載: 訪客無法瀏覽下載點,請先 註冊登入會員

其實我覺得教授是沒有要我們用到Stack的概念...
真的就是最簡單 能夠計算兩個數字的+-*/這樣就好...
剛剛 ...
不過我是資訊科系的 不會輕易嚇跑的~!!!
...
瀏覽完整內容,請先 註冊登入會員
回覆中加入附件並不會使你增加積分,請使用主題方式發佈附件。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部