国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

簡易計算器-課后程序(JAVA基礎案例教程-黑馬程序員編著-第十一章-課后作業(yè))

這篇具有很好參考價值的文章主要介紹了簡易計算器-課后程序(JAVA基礎案例教程-黑馬程序員編著-第十一章-課后作業(yè))。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【案例11-2】 簡易計算器

【案例介紹】

1.案例描述

本案例要求利用Java Swing 圖形組件開發(fā)一個可以進行簡單的四則運算的圖形化計算器。

2.運行結果

cal方法編寫了計算邏輯的實現,Java,java,開發(fā)語言,ui

運行結果

?

【案例分析】

要制作一個計算器,首先要知道它由哪些部分組成,如下圖所示:

cal方法編寫了計算邏輯的實現,Java,java,開發(fā)語言,ui

一個簡單的圖形化界面計算器,需要由界面組件、組件的時間監(jiān)聽器和具體的事件處理邏輯組成。

實現一個簡易圖形化界面計算器可分以下幾個步驟:

1.UI組件創(chuàng)建和初始化:包括窗體的創(chuàng)建,顯示計算結果文本框、清除按鈕、數字按鈕、運算符等按鈕的初始化。

2.在窗體中添加UI組件:包括放置數字鍵及運算符面板、放置清除框面板。

3.布局結束之后,就是計算器的難點:編寫事件處理程序。

4.按鍵的響應實現。

5.計算邏輯的實現。

6.注冊監(jiān)聽器

【案例實現】

Calculator.java

  1. package chapter1102;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. import java.util.Vector;
  6. import java.math.BigDecimal;
  7. public class Calculator {
  8. ??????????// 操作數1,為了程序的安全,初值一定設置,這里我們設置為0。
  9. ??????????String str1 = "0";
  10. ??? ?????// 操作數2
  11. ?????String str2 = "0";
  12. ?????// 運算符
  13. ??? String signal = "+"; ?
  14. ?????// 運算結果
  15. ??? String result = "";
  16. ?????// 以下k1k5為狀態(tài)開關
  17. ?????// 開關1用于選擇輸入方向,將要寫入str1str2
  18. ?????// 1 時寫入 str1,為 2 時寫入 str2
  19. ??? int k1 = 1;
  20. ????// 開關 2 用于記錄符號鍵的次數
  21. ?????// 如果 k2>1 說明進行的是 2+3-9+8 這樣的多符號運算
  22. ??? int k2 = 1;
  23. ?????// 開關3用于標識 str1 是否可以被清 0
  24. ?????// 等于 1 時可以,不等于1時不能被清0
  25. ??? int k3 = 1;
  26. ?????// 開關4用于標識 str2 是否可以被清 0
  27. ?????// 等于 1 時可以,不等于1時不能被清0
  28. ??? int k4 = 1;
  29. ?????// 開關5用于控制小數點可否被錄入
  30. ?????// 等于1時可以,不為1時,輸入的小數點被丟掉
  31. ??? int k5 = 1;
  32. ?????// store的作用類似于寄存器,用于記錄是否連續(xù)按下符號鍵
  33. ??? JButton store;
  34. ?????//vt 存儲之前輸入的運算符。
  35. ??? @SuppressWarnings("rawtypes")
  36. ??? Vector vt = new Vector(20, 10);
  37. ?????// 創(chuàng)建一個 JFrame 對象并初始化。JFrame 可以理解為程序的主窗體。??
  38. ?????JFrame frame = new JFrame("Calculator");
  39. ?//創(chuàng)建一個JTextField對象并初始化。JTextField用于顯示操作和計算結果的文本框。
  40. ?????// 參數 20 表明可以顯示 20 列的文本內容
  41. ??? JTextField result_TextField = new JTextField(result, 20);
  42. ?????// 清除按鈕
  43. ??? JButton clear_Button = new JButton("Clear");
  44. ?????// 數字鍵09
  45. ??? JButton button0 = new JButton("0");
  46. ??? JButton button1 = new JButton("1");
  47. ??? JButton button2 = new JButton("2");
  48. ??? JButton button3 = new JButton("3");
  49. ??? JButton button4 = new JButton("4");
  50. ??? JButton button5 = new JButton("5");
  51. ??? JButton button6 = new JButton("6");
  52. ??? JButton button7 = new JButton("7");
  53. ??? JButton button8 = new JButton("8");
  54. ??? JButton button9 = new JButton("9");
  55. ?????// 計算命令按鈕,加減乘除以及小數點等
  56. ??? JButton button_Dian = new JButton(".");
  57. ??? JButton button_jia = new JButton("+");
  58. ??? JButton button_jian = new JButton("-");
  59. ??? JButton button_cheng = new JButton("*");
  60. ??? JButton button_chu = new JButton("/");
  61. ??? JButton button_dy = new JButton("=");
  62. ??? public Calculator() {
  63. ??????? button0.setMnemonic(KeyEvent.VK_0);
  64. ??? result_TextField.setHorizontalAlignment(JTextField.RIGHT);
  65. ??????? // 創(chuàng)建一個 Jpanel 對象并初始化
  66. ?????????JPanel pan = new JPanel();
  67. ?????????// 設置該容器的布局為四行四列,邊距為5像素
  68. ??????? pan.setLayout(new GridLayout(4, 4, 5, 5));
  69. ?????????// 將用于計算的按鈕添加到容器內
  70. ??????? pan.add(button7);
  71. ??????? pan.add(button8);
  72. ??????? pan.add(button9);
  73. ??????? pan.add(button_chu);
  74. ??????? pan.add(button4);
  75. ??????? pan.add(button5);
  76. ??????? pan.add(button6);
  77. ??????? pan.add(button_cheng);
  78. ??????? pan.add(button1);
  79. ??????? pan.add(button2);
  80. ??????? pan.add(button3);
  81. ??????? pan.add(button_jian);
  82. ??????? pan.add(button0);
  83. ??????? pan.add(button_Dian);
  84. ??????? pan.add(button_dy);
  85. ??????? pan.add(button_jia);
  86. ?????????// 設置 pan 對象的邊距
  87. ??? ??? pan.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
  88. ?????????// 按照同樣的方式設置第二個JPanel
  89. ??????? JPanel pan2 = new JPanel();
  90. ??????? pan2.setLayout(new BorderLayout());
  91. ??????? pan2.add(result_TextField, BorderLayout.WEST);
  92. ??????? pan2.add(clear_Button, BorderLayout.EAST);
  93. ??????????// 設置主窗口出現在屏幕上的位置
  94. ??????? frame.setLocation(300, 200);
  95. ?????????// 設置窗體可以調大小
  96. ??????? frame.setResizable(true);
  97. ?????????//窗體中可以放置 JPanel,這里我們將面板pan和面板pan2讓如窗體
  98. ??????? frame.getContentPane().setLayout(new BorderLayout());
  99. ??????? frame.getContentPane().add(pan2, BorderLayout.NORTH);
  100. ??????? frame.getContentPane().add(pan, BorderLayout.CENTER);
  101. ??????? frame.pack();
  102. ??????? frame.setVisible(true);
  103. ?????????//Listener類中編寫的是數字鍵的響應邏輯。
  104. ??????? class Listener implements ActionListener {
  105. ?????????? @SuppressWarnings("unchecked")
  106. ?????????? public void actionPerformed(ActionEvent e) {
  107. ?????????????? String ss = ((JButton) e.getSource()).getText();
  108. ?????????????? store = (JButton) e.getSource();
  109. ?????????????? vt.add(store);
  110. ?????????????? if (k1 == 1) {
  111. ?????????????????? if (k3 == 1) {
  112. ?????????????????????? str1 = "";
  113. ?????????????????????? k5 = 1;
  114. ?????????????????? }
  115. ?????????????????? str1 = str1 + ss;
  116. ?????????????????? k3 = k3 + 1;
  117. ?????????????????? result_TextField.setText(str1);
  118. ?????????????? } else if (k1 == 2) {
  119. ?????????????????? if (k4 == 1) {
  120. ?????????????????????? str2 = "";
  121. ?????????????????????? k5 = 1;
  122. ?????????????? }
  123. ?????????????????? str2 = str2 + ss;
  124. ?????????????????? k4 = k4 + 1;
  125. ?????????????????? result_TextField.setText(str2);
  126. ?????????????? } ?????????????????????????????
  127. ?????????? }
  128. ??????? }
  129. ??????????//Listener_signal類中編寫了運算符號鍵的響應邏輯
  130. ??????? class Listener_signal implements ActionListener {
  131. ?????????? @SuppressWarnings("unchecked")
  132. ?????????? public void actionPerformed(ActionEvent e) {
  133. ?????????????? String ss2 = ((JButton) e.getSource()).getText();
  134. ?????????????? store = (JButton) e.getSource();
  135. ?????????????? vt.add(store);
  136. ?????????????? if (k2 == 1) {
  137. ?????????????????? k1 = 2;
  138. ?????????????????? k5 = 1;
  139. ?????????????????? signal = ss2;
  140. ?????????????????? k2 = k2 + 1;
  141. ?????????????? } else {
  142. ?????????????????? int a = vt.size();
  143. ?????????????????? JButton c = (JButton) vt.get(a - 2);
  144. ?????????????????? if (!(c.getText().equals("+"))
  145. ?????????????????????????? && !(c.getText().equals("-"))
  146. ?????????????????????? ??? && !(c.getText().equals("*"))
  147. ?????????????????????? ??? && !(c.getText().equals("/")))
  148. ?????????????????? {
  149. ?????????????????????? cal();
  150. ?????????????????????? str1 = result;
  151. ?????????????????????? k1 = 2;
  152. ?????????????? ??????? k5 = 1;
  153. ?????????????????????? k4 = 1;
  154. ?????????????????????? signal = ss2;
  155. ?????????????????? }
  156. ?????????????????? k2 = k2 + 1;
  157. ?????????????? }
  158. ?????????? }
  159. ??????? }
  160. ?????//Listener_clear類中編寫了清除鍵的響應邏輯
  161. ??? class Listener_clear implements ActionListener {
  162. ?????????? @SuppressWarnings("unchecked")
  163. ?????????? public void actionPerformed(ActionEvent e) {
  164. ?????????????? store = (JButton) e.getSource();
  165. ?????????????? vt.add(store);
  166. ?????????????? k5 = 1;
  167. ?????????????? k2 = 1;
  168. ?????????????? k1 = 1;
  169. ?????????????? k3 = 1;
  170. ?????????????? k4 = 1;
  171. ?????????????? str1 = "0";
  172. ?????????????? str2 = "0";
  173. ?????????????? signal = "";
  174. ?????????????? result = "";
  175. ?????????????? result_TextField.setText(result);
  176. ?????????? ??? vt.clear();
  177. ?????????? }
  178. ??????? }
  179. ?????//Listener_dy類中編寫的是等于號鍵的響應邏輯
  180. ??? class Listener_dy implements ActionListener {
  181. ?????????? @SuppressWarnings("unchecked")
  182. ?????????? public void actionPerformed(ActionEvent e) {
  183. ?????????????? store = (JButton) e.getSource();
  184. ?????????????? vt.add(store);
  185. ?????????????? cal();
  186. ?????????????? k1 = 1;
  187. ?????????????? k2 = 1;
  188. ?????????????? k3 = 1;
  189. ?????????????? k4 = 1;
  190. ?????????????? str1 = result;
  191. ?????????? }
  192. ??????? }
  193. //Listener_xiaos類中編寫的是小數點鍵的相應邏輯
  194. class Listener_xiaos implements ActionListener {
  195. ?????????? @SuppressWarnings("unchecked")
  196. ?????????? public void actionPerformed(ActionEvent e) {
  197. ?????????????? store = (JButton) e.getSource();
  198. ?????????????? vt.add(store);
  199. ?????????????? if (k5 == 1) {
  200. ?????????????????? String ss2 = ((JButton) e.getSource()).getText();
  201. ?????????????????? if (k1 == 1) {
  202. ?????????????????????? if (k3 == 1) {
  203. ?????????????????????????? str1 = "";
  204. ?????????????????????????? k5 = 1;
  205. ?????????????????????? }
  206. ?????????????????????? str1 = str1 + ss2;
  207. ?????????????????????? k3 = k3 + 1;
  208. ?????????????????????? result_TextField.setText(str1);
  209. ?????????????????? } else if (k1 == 2) {
  210. ?????????????????????? if (k4 == 1) {
  211. ?????????????????????????? str2 = "";
  212. ?????????????????????????? k5 = 1;
  213. ?????????????????????? }
  214. ?????????????????????? str2 = str2 + ss2;
  215. ?????????????????????? k4 = k4 + 1;
  216. ?????????????????????? result_TextField.setText(str2);
  217. ?????????????????? }
  218. ?????????????? }
  219. ?????????????? k5 = k5 + 1;
  220. ?????????? }
  221. ??????? }
  222. ??????????// 監(jiān)聽等于鍵
  223. ??????? Listener_dy jt_dy = new Listener_dy();
  224. ?????????// 監(jiān)聽數字鍵
  225. ??????? Listener jt = new Listener();
  226. ?????????// 監(jiān)聽符號鍵
  227. ??????? Listener_signal jt_signal = new Listener_signal();
  228. ?????????// 監(jiān)聽清除鍵
  229. ??????? Listener_clear jt_c = new Listener_clear();
  230. ?????????// 監(jiān)聽小數點鍵
  231. ??????? Listener_xiaos jt_xs = new Listener_xiaos();
  232. ??????? button7.addActionListener(jt);
  233. ??????? button8.addActionListener(jt);
  234. ??????? button9.addActionListener(jt);
  235. ??????? button_chu.addActionListener(jt_signal);
  236. ??????? button4.addActionListener(jt);
  237. ??????? button5.addActionListener(jt);
  238. ??????? button6.addActionListener(jt);
  239. ??????? button_cheng.addActionListener(jt_signal);
  240. ??????? button1.addActionListener(jt);
  241. ??????? button2.addActionListener(jt);
  242. ??????? button3.addActionListener(jt);
  243. ??????? button_jian.addActionListener(jt_signal);
  244. ??????? button0.addActionListener(jt);
  245. ??????? button_Dian.addActionListener(jt_xs);
  246. ??????? button_dy.addActionListener(jt_dy);
  247. ??????? button_jia.addActionListener(jt_signal);
  248. ??????? clear_Button.addActionListener(jt_c);
  249. ??????????// 窗體關閉事件的響應程序
  250. ??????? frame.addWindowListener(new WindowAdapter() {
  251. ?????????? public void windowClosing(WindowEvent e) {
  252. ?????????????? System.exit(0);
  253. ?????????? }
  254. ??????? });
  255. ??? }
  256. ?????// calc()方法中編寫了計算邏輯的實現。
  257. ??? public void cal() {
  258. ??????? double a2;
  259. ??????? double b2;
  260. ??????? String c = signal;
  261. ??????? double result2 = 0;
  262. ??????? if (c.equals("")) {
  263. ?????????? result_TextField.setText("Please input operator");
  264. ??????? } else {
  265. ?????????? if (str1.equals("."))
  266. ?????????????? str1 = "0.0";
  267. ?????????? if (str2.equals("."))
  268. ?????????????? str2 = "0.0";
  269. ?????????? a2 = Double.valueOf(str1).doubleValue();
  270. ?????????? b2 = Double.valueOf(str2).doubleValue();
  271. ?????????? if (c.equals("+")) {
  272. ?????????????? result2 = a2 + b2;
  273. ?????????? }
  274. ?????????? if (c.equals("-")) {
  275. ?????????????? result2 = a2 - b2;
  276. ?????????? }
  277. ?????????? if (c.equals("*")) {
  278. ?????????????? BigDecimal m1 = new BigDecimal(Double.toString(a2));
  279. ?????????? ????????BigDecimal m2 = new
  280. ????????????????????????????????????BigDecimal(Double.toString(b2));
  281. ?????????? ????????result2 = m1.multiply(m2).doubleValue();
  282. ?????????? }
  283. ?????????? if (c.equals("/")) {
  284. ?????????????? if (b2 == 0) {
  285. ?????????????????? result2 = 0;
  286. ?????????????? } else {
  287. ?????????????????? result2 = a2 / b2;
  288. ?????????????? }
  289. ?????????? }
  290. ?????????? result = ((new Double(result2)).toString());
  291. ?????????? result_TextField.setText(result);
  292. ??????? }
  293. ??? }
  294. ??? @SuppressWarnings("unused")
  295. ??? public static void main(String[] args) {
  296. ??? try {??
  297. ?//通過 UIManager 來設置窗體的 UI 風格
  298. ?UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
  299. ??????? } catch (Exception e) {
  300. ?????????? e.printStackTrace();
  301. ??????? }
  302. ??????? Calculator cal = new Calculator();
  303. ??? }
  304. }

上述代碼中,第7-32行代碼,定義了一些成員變量,方便響應的邏輯實現。第34-35行代碼,創(chuàng)建了一個Vector對象,存儲之前輸入的運算符。第37行代碼,創(chuàng)建了一個 JFrame 對象并初始化。JFrame 可以理解為程序的主窗體。第40行代碼,創(chuàng)建了一個JTextField對象并初始化。JTextField用于顯示操作和計算結果的文本框。參數 20 表明可以顯示 20 列的文本內容。第42行代碼,創(chuàng)建了一個清除按鈕對象。第44-53行,創(chuàng)建數字鍵0-9按鈕對象。第55-60行,創(chuàng)建計算命令按鈕,加減乘除以及小數點等按鈕對象。第65-101行代碼,是對計算器進行布局。Listener類中編寫的是數字鍵的響應邏輯。Listener_xiaos類中編寫的是小數點鍵的相應邏輯。Listener_signal類中編寫了運算符號鍵的響應邏輯。Listener_dy類中編寫的是等于號鍵的響應邏輯。Listener_clear類中編寫了清除鍵的響應邏輯。calc()方法中編寫了計算邏輯的實現。第222-247行代碼,創(chuàng)建監(jiān)聽對象,斌對各個按鍵進行監(jiān)聽。第249-253行代碼,為窗體關閉事件的響應程序。第297行代碼,通過 UIManager 來設置窗體的 UI 風格。文章來源地址http://www.zghlxwxcb.cn/news/detail-778858.html

到了這里,關于簡易計算器-課后程序(JAVA基礎案例教程-黑馬程序員編著-第十一章-課后作業(yè))的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 微信小程序-簡易計算器

    微信小程序-簡易計算器

    微信小程序-簡易計算器,滿足日常所用的的加減乘除計算 一、前期準備工作 軟件環(huán)境:微信開發(fā)者工具 官方下載地址:微信開發(fā)者工具下載地址與更新日志 | 微信開放文檔 1、基本需求。 簡易計算器 滿足日常所用的的加減乘除計算 帶歷史記錄,查看過往計算 2、案例目錄結構

    2024年02月04日
    瀏覽(26)
  • 微信小程序————簡易計算器

    微信小程序————簡易計算器

    ? ? 點擊頁面數字按鍵可以計算簡單的加減乘除數據運算。 頁面顯示 ? 大概邏輯是當點第一次擊數字鍵的時候要有個變量來存儲這個點擊的數,然后再來個記錄點擊運算符的變量,等要算的數全輸入后,最后“=”后把前面輸入的數字和運算符以字符串的形式顯示在上屏幕上

    2024年02月17日
    瀏覽(23)
  • Java課程設計——簡易計算器

    Java課程設計——簡易計算器

    1.系統簡介 1.1設計背景 ????隨著人們物質生活水平的日益提高,人們對高質量的計算提出了更高的要求。當今世界,是云計算的生活和物聯網發(fā)展和使用階段,計算性能的高低和計算的效率直接影響到了人們的生活。對此,使用Java語言開發(fā)出一個為人們生活帶來便利的計算

    2024年02月08日
    瀏覽(23)
  • HTML程序大全(1):簡易計算器

    HTML代碼,主要創(chuàng)建了幾個按鈕。 CSS代碼,主要設置了背景、計算機板和按鈕等等的顏色。 javascript代碼,主要設置了對應按鈕按下的顯示、計算、清零的工作。 總結: 這是一個簡單的計算器,使用HTML、CSS和JavaScript實現。HTML代碼創(chuàng)建了一個計算器的界面,CSS代碼設置了計算

    2024年02月04日
    瀏覽(90)
  • Python自制簡易版計算器小程序

    Python自制簡易版計算器小程序

    今天來給你們分享一個自制的桌面小程序【簡易版計算器】 文章內有效果展示,你們可以自行看看哦 不想看文章,想直接領取源碼的話,可以直接點擊文章末尾的名片哈 Python 3.6 Pycharm 界面設置 導入模塊 所有 源碼 點擊 此處 領取 即可 實例化一個窗體對象 標題 大小以及出

    2024年02月09日
    瀏覽(16)
  • 微信小程序如何制作簡易計算器

    微信小程序如何制作簡易計算器

    1、首先在瀏覽器中輸入\\\"GitHub - dunizb/wxapp-sCalc: :speech_balloon:微信小程序版簡易計算器demo,適合入門練手\\\"網址,輸入完成后會進入到以下這個界面: 2、點擊旁邊綠色的按鍵 3、點擊之后會有以下幾個選項: 點擊最后一行的Download ZIP,下載一個文件 然后解壓一下這個文件,解壓完

    2024年04月23日
    瀏覽(26)
  • Java課設-百行代碼實現簡易計算器

    Java課設-百行代碼實現簡易計算器

    Java程序設計 工程實踐 ——簡易計算器的設計 院、 系 計算機與軟件學院 專業(yè) 信息安全 姓 名 指導教師 2022年 6 月 11 日 目錄: 一、 設計簡介 2 1、 設計背景 2 2、 開發(fā)工具及環(huán)境 2 (1)開發(fā)工具及介紹 2 (2)開發(fā)環(huán)境 2 二、 相關工作 2 1、設計基礎 2 2、功能需求 2 3、系統

    2024年02月04日
    瀏覽(23)
  • JAVA課程設計——GUI實現簡易計算器

    JAVA課程設計——GUI實現簡易計算器

    一.設計任務及要求 任務:設計并實現一個計算器小程序 要求: 使用圖形用戶界面 能在鍵盤或鼠標上讀入數據,并完成加,減,乘,除計算。 在屏幕上顯示一個主菜單。 提示用戶輸入相應的數字鍵,分別執(zhí)行加,減,乘,除計算功能和結束程序的功能。 二.需求分析: ? 計算

    2024年02月12日
    瀏覽(20)
  • 微信小程序案例——計算器

    微信小程序案例——計算器

    1、創(chuàng)建項目 按照慣例,做一些初始化工作 2、設置導航欄 在 app.json 文件設置 window 配置項 pages/index/index.wxml 文件 1、編寫頁面整體結構 2、編寫結果區(qū)域結構 兩行內容:第一行是當前的計算式,第二行是當前計算結果 3、編寫按鈕區(qū)域第一行按鈕的結構 第一行包含四個按鈕:

    2024年04月11日
    瀏覽(24)
  • 【微信小程序】計算器案例

    【微信小程序】計算器案例

    ??今日學習目標:第二十一期——計算器案例 ?個人主頁:顏顏yan_的個人主頁 ?預計時間:30分鐘 ??專欄系列:我的第一個微信小程序 嗨嗨嗨,好久沒更新小程序專欄了,本期淺淺用小程序寫一個計算器。 最終代碼會上傳至資源噢~ 新建一個項目,在app.json中配置文件導

    2024年01月17日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包