Java java지도 시간 Java 간단한 계산기 프로그래밍

Java 간단한 계산기 프로그래밍

Jan 20, 2017 pm 05:01 PM

패널 및 그리드 레이아웃을 사용하여 텍스트 상자, 10개의 숫자 버튼(0~9), 4개의 더하기, 빼기, 곱하기 및 나누기 버튼, 등호 버튼 및 지우기 버튼을 추가하여 계산기를 시뮬레이션하는 애플리케이션을 작성합니다. . 제곱근 버튼과 백스페이스 버튼을 사용하려면 계산식과 결과가 텍스트 상자에 표시되어야 합니다. 효과는 아래 그림과 같습니다.

Java 단순 계산기 코드:

import javax.swing.*; 
import javax.swing.JTextField; 
import java.awt.*; 
import java.awt.event.*; 
import java.lang.*; 
import java.awt.Color; 
  
  
public class Ex5_2 extends JFrame implements ActionListener 
{ 
  private JPanel p1 = new JPanel(); //创建面板 
  private JPanel p2 = new JPanel(); 
  private JTextField t1;   //文本框1用来显示输入信息 
  private JTextField t2;   //文本框2用来显示结果信息 
  private JLabel label;    //标签信息 
  StringBuffer str;      //显示屏所显示的字符串  
  double x,y;         //x和y都是运算数  
  int z;           //Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"      
  private JButton b[] = new JButton[12]; //创建一个有12个按钮的数组 
  private JButton b1,b2,b3,b4,b5,b6,b7,b8; //算术功能按钮 
  
  
  public Ex5_2() 
  { 
    super("简易计算器");   //窗口名称 
    Container c = getContentPane(); //创建内容面板对象 
  
    t1 = new JTextField(30); 
    t1.setEditable(false); //只能显示,不能编辑 
    t2 = new JTextField(30); 
    t2.setEditable(false); //只能显示,不能编辑 
    label = new JLabel("欢迎使用小巫版计算器^_^o~ 努力!"); 
    label.setForeground(Color.blue); 
  
    //创建一个空字符串缓冲区  
    str=new StringBuffer();  
  
    p2.add(label); //添加标签到面板 
    p2.add(t2);   //添加文本框到面板 
    p2.add(t1);   //添加文本框到面板 
    p2.setLayout(new GridLayout(4,1)); //把面扳布局为4行1列 
  
    for(int i=0;i<10;i++)  //分别为数组中0~9号的按钮设置标签,并注册监听器 
    { 
      String s=""+i; 
      b[i]= new JButton(s);   
      b[i].addActionListener(this);   
    } 
      
    //实例化各个按钮 
    b[10]= new JButton("-/+"); b[11]= new JButton("."); 
    b1= new JButton("/");    b2= new JButton("Back"); 
    b3= new JButton("*");    b4= new JButton("C"); 
    b5= new JButton("+");    b6= new JButton("Sqrt"); 
    b7= new JButton("-");    b8= new JButton("="); 
      
    //设置按钮前景色 
    for(int i=0;i<12;i++) 
    { 
      b[i].setForeground(Color.blue); 
    } 
  
    b1.setForeground(Color.red);  b3.setForeground(Color.red); 
    b5.setForeground(Color.red);  b7.setForeground(Color.red); 
    b2.setForeground(Color.blue);  b4.setForeground(Color.blue); 
    b6.setForeground(Color.red);   b8.setForeground(Color.blue); 
  
      
    //添加到面板 
    p1.add(b[7]); p1.add(b[8]); p1.add(b[9]); p1.add(b1); p1.add(b2); 
    p1.add(b[4]); p1.add(b[5]); p1.add(b[6]); p1.add(b3); p1.add(b4); 
    p1.add(b[1]); p1.add(b[2]); p1.add(b[3]); p1.add(b5); p1.add(b6); 
    p1.add(b[0]); p1.add(b[10]); p1.add(b[11]);p1.add(b7);p1.add(b8); 
    p1.setLayout(new GridLayout(4,5,5,5)); 
  
      
    //注册监听器 
    b[10].addActionListener(this); b[11].addActionListener(this); 
    b1.addActionListener(this); b2.addActionListener(this); 
    b3.addActionListener(this); b4.addActionListener(this); 
    b5.addActionListener(this); b6.addActionListener(this); 
    b7.addActionListener(this); b8.addActionListener(this); 
    
    //将面板添加到内容面板 
    c.add(p2); 
    c.add(p1); 
    c.setLayout(new FlowLayout()); //设置为顺序布局 
      
      
      
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭动作 
    setVisible(true);  //设置为可见 
    setResizable(false); //禁止调整框架大小 
    setSize(400,300);  //设置窗口大小 
  
  } 
  
    
  //主方法实现创建一个窗口 
  public static void main(String[] args) 
  { Ex5_2 f = new Ex5_2(); } 
  
    
  //按钮的事件处理 
  public void actionPerformed(ActionEvent e) 
  { 
  try
  { 
    if(e.getSource()==b4)  //选择"C"清零 
    { 
      t1.setText("0"); //把文本框清零 
      t1.setHorizontalAlignment(JTextField.RIGHT);  //文本对齐右边 
      str.setLength(0); //清空字符串缓冲区以准备接收新的输入运算数 
    } 
    else if(e.getSource()==b[10])//单击"+/-"选择输入的运算数是正数还是负数  
    { 
      x=Double.parseDouble(t1.getText().trim());//trim函数作用是去掉字符串中的空格 
      t1.setText(""+(-x)); 
      t1.setHorizontalAlignment(JTextField.RIGHT); 
    } 
    else if (e.getSource()==b5)//单击加号按钮获得x的值和z的值并清空y的值 
    { 
      x=Double.parseDouble(t1.getText().trim()); 
      str.setLength(0); 
      y=0d; 
      z=0; 
    } 
    else if(e.getSource()==b7)//单击减号按钮获得x的值和z的值并清空y的值  
    { 
      x=Double.parseDouble(t1.getText().trim()); 
      str.setLength(0); 
      y=0d; 
      z=1; 
    } 
    else if(e.getSource()==b3)//单击乘号按钮获得x的值和z的值并清空y的值  
    { 
      x=Double.parseDouble(t1.getText().trim()); 
      str.setLength(0); 
      y=0d; 
      z=2; 
    } 
    else if(e.getSource()==b1)//单击除号按钮获得x的值和z的值并清空y的值  
    { 
      x=Double.parseDouble(t1.getText().trim()); 
      str.setLength(0); 
      y=0d; 
      z=3; 
    } 
    else if(e.getSource()==b8)//单击等号按钮输出计算结果  
    { 
      str.setLength(0); 
      switch(z) 
      { 
        case 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; 
        case 1: t1.setText(""+(x-y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; 
        case 2: t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; 
        case 3: t1.setText(""+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT);break; 
      } 
    } 
    else if(e.getSource()==b[11])//单击"."按钮输入小数  
    { 
      if(t1.getText().trim().indexOf(&#39;.&#39;)!=-1)//判断字符串中是否已经包含了小数点 
      { 
      } 
      else //如果没有小数点 
      { 
        if(t1.getText().trim().equals("0"))//如果初时显示为0  
        { 
          t1.setText(str.append(e.getActionCommand()).toString()); 
          t1.setHorizontalAlignment(JTextField.RIGHT); 
        } 
        else if(t1.getText().trim().equals(""))//如果初时显示为空则不做任何操作 
        {} 
        else 
        {  
          t1.setText(str.append(e.getActionCommand()).toString());  
          t1.setHorizontalAlignment(JTextField.RIGHT); 
        } 
  
      } 
    y=0d; 
    } 
  
    else if(e.getSource()==b6) //求平方根  
    { 
      x=Double.parseDouble(t1.getText().trim());  
      if(x<0) 
      { 
        t1.setText("数字格式异常"); 
        t1.setHorizontalAlignment(JTextField.RIGHT); 
      } 
      else
      { 
        t1.setText(""+Math.sqrt(x)); 
        t1.setHorizontalAlignment(JTextField.RIGHT); 
      } 
      str.setLength(0); 
      y=0d; 
    } 
  
    else
    { 
      if(e.getSource()==b[0])//如果选择的是"0"这个数字键  
      { 
        if(t1.getText().trim().equals("0"))//如果显示屏显示的为零不做操作  
        {} 
        else
          t1.setText(str.append(e.getActionCommand()).toString()); 
          t1.setHorizontalAlignment(JTextField.RIGHT); 
          y=Double.parseDouble(t1.getText().trim());  
      } 
      else if (e.getSource()==b2) //选择的是back键 
      { 
        if(!t1.getText().trim().equals("0"))//如果显示屏显示的不是零  
        { 
        if(str.length()!=1)  
        {  
          t1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常  
          t1.setHorizontalAlignment(JTextField.RIGHT); 
        } 
        else 
        {  
          t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT); 
          str.setLength(0);  
        }  
      }  
      y=Double.parseDouble(t1.getText().trim());  
      } 
      else 
        { 
        t1.setText(str.append(e.getActionCommand()).toString());  
        t1.setHorizontalAlignment(JTextField.RIGHT); 
        y=Double.parseDouble(t1.getText().trim()); 
        } 
      } 
    } 
    catch(NumberFormatException e1){ t1.setText("数字格式异常"); 
    t1.setHorizontalAlignment(JTextField.RIGHT); }  
  
    catch(StringIndexOutOfBoundsException e1){t1.setText("字符串索引越界"); 
    t1.setHorizontalAlignment(JTextField.RIGHT);}  
  } 
}
로그인 후 복사

렌더링 실행:

Java 간단한 계산기 프로그래밍

이렇게 Java 단순 계산기 프로그램의 디자인이 완성되었으면 좋겠습니다. 이 기사는 계산기 작성에 영감을 줄 수 있습니다. 이것은 단순한 계산기일 뿐이며 계속 사용하여 계산기의 기능을 향상시킬 수 있습니다.

Java 간편계산기 프로그래밍과 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까? Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까? Mar 17, 2025 pm 05:35 PM

Java의 클래스 로딩에는 부트 스트랩, 확장 및 응용 프로그램 클래스 로더가있는 계층 적 시스템을 사용하여 클래스로드, 링크 및 초기화 클래스가 포함됩니다. 학부모 위임 모델은 핵심 클래스가 먼저로드되어 사용자 정의 클래스 LOA에 영향을 미치도록합니다.

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까? 카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까? Mar 17, 2025 pm 05:44 PM

이 기사는 카페인 및 구아바 캐시를 사용하여 자바에서 다단계 캐싱을 구현하여 응용 프로그램 성능을 향상시키는 것에 대해 설명합니다. 구성 및 퇴거 정책 관리 Best Pra와 함께 설정, 통합 및 성능 이점을 다룹니다.

Java에서 기능 프로그래밍 기술을 어떻게 구현할 수 있습니까? Java에서 기능 프로그래밍 기술을 어떻게 구현할 수 있습니까? Mar 11, 2025 pm 05:51 PM

이 기사는 Lambda 표현식, 스트림 API, 메소드 참조 및 선택 사항을 사용하여 기능 프로그래밍을 Java에 통합합니다. 간결함과 불변성을 통한 개선 된 코드 가독성 및 유지 관리 가능성과 같은 이점을 강조합니다.

캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까? 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까? Mar 17, 2025 pm 05:43 PM

이 기사는 캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA를 사용하는 것에 대해 설명합니다. 잠재적 인 함정을 강조하면서 성능을 최적화하기위한 설정, 엔티티 매핑 및 모범 사례를 다룹니다. [159 문자]

고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까? 고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까? Mar 17, 2025 pm 05:46 PM

이 기사에서는 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 및 Gradle을 사용하여 접근 방식과 최적화 전략을 비교합니다.

비 블로킹 I/O에 Java의 NIO (새로운 입력/출력) API를 어떻게 사용합니까? 비 블로킹 I/O에 Java의 NIO (새로운 입력/출력) API를 어떻게 사용합니까? Mar 11, 2025 pm 05:51 PM

이 기사에서는 선택기와 채널을 사용하여 단일 스레드와 효율적으로 처리하기 위해 선택기 및 채널을 사용하여 Java의 NIO API를 설명합니다. 프로세스, 이점 (확장 성, 성능) 및 잠재적 인 함정 (복잡성,

적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까? 적절한 버전 및 종속성 관리로 Custom Java 라이브러리 (JAR Files)를 작성하고 사용하려면 어떻게해야합니까? Mar 17, 2025 pm 05:45 PM

이 기사에서는 Maven 및 Gradle과 같은 도구를 사용하여 적절한 버전 및 종속성 관리로 사용자 정의 Java 라이브러리 (JAR Files)를 작성하고 사용하는 것에 대해 설명합니다.

네트워크 통신에 Java의 Sockets API를 어떻게 사용합니까? 네트워크 통신에 Java의 Sockets API를 어떻게 사용합니까? Mar 11, 2025 pm 05:53 PM

이 기사는 네트워크 통신을위한 Java의 소켓 API, 클라이언트 서버 설정, 데이터 처리 및 리소스 관리, 오류 처리 및 보안과 같은 중요한 고려 사항에 대해 자세히 설명합니다. 또한 성능 최적화 기술, i

See all articles