이 기사에서는 Java가 구현 한 계산기 기능에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
패키지 awtdemo; import java.awt.borderlayout; import java.awt.color; import java.awt.gridlayout; import java.awt.event.actionevent; import java.awt.event.actionListener; import javax.swing.jbutton; import javax.swing.jframe; javax.swing. javax.swing.jtextfield; @suppresswarnings ( "Serial") 공개 클래스 계산기는 jframe 구현을 확장합니다. "0", "+/-", ".", "+", "="}; 개인 최종 문자열 [] 명령 = { "백 스페이스", "CE", "C"}; 개인 JBUTTON 키 [] = 새로운 JBUTTON [keys.Length]; private jbutton commands [] = new Jbutton [command.length]; private jtextfield resulttext = new Jtextfield ( "0"); 개인 부울 FirstDigit = true; 비공개 이중 resultnum = 0.0; 개인 문자열 연산자 = "="; 개인 부울 운영자 Validflag = true; 공개 계산기 () {init (); this.setbackground (color.light_gray); this.settitle ( "www.vevb.com- 계산기"); this.setLocation (500, 300); this.setResizable (false); this.pack (); } private void init () {resulttext.sethorizontalalignment (jtextfield.right); resultText.SetEdable (false); resulttext.setbackground (Color.white); jpanel calckeyspanel = 새로운 jpanel (); calckeyspanel.setlayout (New Gridlayout (4, 5, 3, 3)); for (int i = 0; i <keys.length; i ++) {키 [i] = new Jbutton (키 [i]); calckeyspanel.add (키 [i]); 키 [i] .setforeground (color.blue); } 키 [3] .setforeground (color.red); 키 [8] .setforeground (color.red); 키 [13] .setforeground (color.red); 키 [18] .setforeground (color.red); 키 [19] .setforeground (color.red); jpanel commandSpanel = new jpanel (); CommandSpanel.SetLayout (New GridLayout (1, 3, 3, 3)); for (int i = 0; i <command.length; i ++) {commands [i] = new Jbutton (명령 [i]); commandSpanel.add (명령 [i]); 명령 [i] .setforeground (color.red); } JPANEL PANEL1 = New JPanel (); 패널1.SetLayout (New BorderLayout (3, 3)); 패널1.add ( "North", CommandSpanel); 패널1.add ( "West", calckeyspanel); jpanel top = new jpanel (); top.setLayout (New BorderLayout ()); top.add ( "Center", resultText); getContentPane (). SetLayout (New BorderLayout (3, 5)); getContentPane (). add ( "North", Top); getContentPane (). add ( "Center", Panel1); for (int i = 0; i <keys.length; i ++) {키 [i] .addactionListener (this); } for (int i = 0; i <command.length; i ++) {commands [i] .addactionListener (this); }} public void ActionPerformed (ActionEvent e) {문자열 레이블 = e.getActionCommand (); if (lade.equals (명령 [0])) {handleBackSpace (); } else if (label.equals (명령 [1])) {resultText.settext ( "0"); } else if (label.equals (명령 [2])) {handlec (); } else if ( "0123456789.". indexof (label)> = 0) {handlenumber (label); } else {handleOperator (레이블); }} private void handbackspace () {문자열 텍스트 = resultText.getText (); int i = text.length (); if (i> 0) {text = text.substring (0, i -1); if (text.length () == 0) {resulttext.settext ( "0"); FirstDigit = true; 연산자 = "="; } else {resultText.settext (텍스트); }}} private void handlenumb (문자열 키) {if (firstDigit) {resultText.Settext (키); } else if ((key.equals ( ".")) && (resultText.getText (). indexof ( ".") <0)) {resultText.Settext (resultText.getText () + "."); } else if (! key.equals ( ".")) {resultText.settext (resultText.getText () + key); } firstDigit = false; } private void handlec () {resulttext.settext ( "0"); FirstDigit = true; 연산자 = "="; } private void handleOperator (string key) {if (operator.equals ( "/")) {if (getNumberFromText () == 0.0) {OperatorValidFlag = false; resultText.settext ( "이혼은 0이 될 수 없음"); } else {resultNum /= getNumberFromText (); }} else if (Operator.equals ( "1/x")) {if (resultnum == 0.0) {OperatorValidFlag = false; resultText.settext ( "0은 상호가 없음"); } else {resultnum = 1 / resultnum; }} else if (Operator.equals ( " +")) {resultNum += getNumberFromText (); } else if (Operator.equals ( " -")) {resultNum- = getNumberFromText (); } else if (Operator.equals ( " *")) {resultNum *= getNumberFromText (); } else if (Operator.equals ( " *")) {resultNum *= getNumberFromText (); } else if (Operator.equals ( " *")) {resultNum *= getNumberFromText (); } else if (Operator.equals ( " *")) {resultNum *= getNumberFromText (); } else if (Operator.equals ( "sqrt")) {resultnum = math.sqrt (resultnum); } else if (Operator.equals ( "%")) {resultNum = resultNum / 100; } else if (Operator.equals ( "+/-")) {resultNum = resultNum * (-1); } else if (Operator.equals ( "=")) {resultNum = getNumberFromText (); } if (OperateValidFlag) {long t1; 이중 T2; T1 = (긴) 결과 주민; t2 = resultnum -t1; if (t2 == 0) {resultText.settext (String.Valueof (t1)); } else {resultText.settext (string.valueof (resultNum)); }} 연산자 = 키; FirstDigit = true; OperateValidflag = true; } private double getNumberFromText () {double result = 0; try {result = double.valueof (resultText.getText ()). doubleValue (); } catch (numberformatexception e) {} return result; } public static void main (String args []) {계산기 계산 1 = new Calculator (); 계산 1.set -Visible (true); 계산 1.setDefaultCloseOperation (jframe.exit_on_close); }}실행 효과 :
추신 : 다음은 다음을 참조 할 수있는 몇 가지 계산 도구입니다.
온라인 단지 기능 (EQ) 솔루션 계산 도구 :
http://tools.vevb.com/jisuanqi/equ_jisuanqi
과학 계산기 온라인 사용 _advanced 계산기 온라인 계산기 :
http://tools.vevb.com/jisuanqi/jsqkeexue
온라인 calculator_standard 계산기 :
http://tools.vevb.com/jisuanqi/jsq
Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약"및 "Java Cache Operation Tips의 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.