Java 编写一个房贷计算器 开放接口接口Calable,该接口规定了房贷计算器 开放接口的基本方法:加(add),减(redu

专心做一件事
java运用面向对象的思想实现计算器的小程序
其实,觉得最重要的就是这里的这样的一段核心代码。
package org.lenovo.
public class OperationFactory {
public static Operation createOperation(String operate){
Operation oper =
switch(operate){
oper = new AddOperation();
oper = new SubOperation();
oper = new MulOperation();
oper = new DivOperation();
在上面的这一段代码中,其中Operation是定义的一个接口,如下所示:
package org.lenovo.
public interface Operation {
public double getResult(double numA , double numB);
而对于加法、减法、乘法、除法以及取余等操作,都是分别定义的一个类,而对于这个类又实现了Operation接口。如下所示:
package org.lenovo.
public class AddOperation implements Operation {
public double getResult(double numA, double numB){
return numA + numB;
}所以,对于OperationFactory类中,通过对于操作符号的一个switch.....case判断,来选择相应的子类进行实例化接口的操作。而在Main方法中,对于此功能的核心调用代码如下:
oper = OperationFactory.createOperation(operate);
result = oper.getResult(numA, numB);
其中对于oper对象、operate(String)字符串、以及double类型的numA, numB在之前已经定义好了。
小结:关于Java多态性的描述,可以理解为一个接口,多个方法。当我们需要实例化此接
口的时候,通过具体的情况用相应的子类来实例化。这样被实例化的对象所调用的方
法就是就是子类所覆写的方法,从而来达到了这一要求。而在这个程序中,如果我们
需要定义一个取模的操作,也是只需要定义一个类实现Operation接口,然后
在OperationFactory中,添加一段判断代码即可。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!java编写计算器界面_百度知道
java编写计算器界面
只编写界面就行,不需要有功能
我有更好的答案
import java.awt.*;import javax.swing.*;import java.awt.event.*;public class MathCalc extends JFrame{
JTextField textD
public String [] name={&1&,&2&,&3&,&4&,&5&,&6&,&7&,&8&,&9&,&0&,&.&,&c&,&+&,&-&,&*&,&/&,&1/x&,&+/-&,&=&}; JButton [] button=new JButton[name.length]; JB double Operand1; double result=0; boolean ClearD String O public MathCalc(){
textDisplay=new JTextField(20);
for(int i=0;i&name.i++)
button[i]=new JButton(name[i]);
for(int i=0;i&name.length-1;i++)
button[i].setPreferredSize(new Dimension(52,28));
button[18].setPreferredSize(new Dimension(105,28));
layoutComponents();
//加入按钮//registerEventHander();
//按钮注册事件监听程序
setTitle(&计算器&);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true); }
private void layoutComponents(){
//布局按钮面板
Container contentPane=getContentPane();
contentPane.setLayout(new GridLayout(5,1));
JPanel TextPane=new JPanel();
TextPane.add(textDisplay);
JPanel buttonPane0 = new JPanel();
JPanel buttonPane1 = new JPanel();
JPanel buttonPane2 = new JPanel();
JPanel buttonPane3 = new JPanel();
for(int i=0;i&=2;i++)
buttonPane0.add(button[i]);
buttonPane0.add(button[10]);
buttonPane0.add(button[11]);
for(int i=3;i&=5;i++)
buttonPane1.add(button[i]);
buttonPane1.add(button[12]);
buttonPane1.add(button[13]);
for(int i=6;i&=8;i++)
buttonPane2.add(button[i]);
buttonPane2.add(button[14]);
buttonPane2.add(button[15]);
buttonPane3.add(button[9]);
buttonPane3.add(button[16]);
buttonPane3.add(button[17]);
buttonPane3.add(button[18]);
contentPane.add(TextPane);
contentPane.add(buttonPane0);
contentPane.add(buttonPane1);
contentPane.add(buttonPane2);
contentPane.add(buttonPane3); } public static void main(String args[]){
//main函数
JFrame.setDefaultLookAndFeelDecorated(true);
MathCalc mathcal=new MathCalc();
mathcal.setVisible(true); }
采纳率:39%
以前我自己的实验作业import java.awt.*;import java.awt.event.*;import javax.swing.*;class Jsq extends JFrame { JMenu menu1=new JMenu(&编辑(E)&); JMenu menu2=new JMenu(&查看(V)&); JMenu menu3=new JMenu(&帮助(H)&); JMenuBar bar=new JMenuBar();
JTextField text=new JTextField(&0.&,20);JRadioButton c1=new JRadioButton(&十六进制&,false); JRadioButton c2=new JRadioButton(&十进制&,true); JRadioButton c3=new JRadioButton(&八进制&,false); JRadioButton c4=new JRadioButton(&二进制&,false);JRadioButton d1=new JRadioButton(&角度&,true); JRadioButton d2=new JRadioButton(&弧度&,false); JRadioButton d3=new JRadioButton(&梯度&,false);JCheckBox e1=new JCheckBox(&Inv&); JCheckBox e2=new JCheckBox(&Hyp&); JTextField lb1=new JTextField(3); JTextField lb2=new JTextField(3); JButton a1=new JButton(&Backspace&); JButton a2=new JButton(&
&); JButton a3=new JButton(&
&); JButton a4=new JButton(&Sta&); JButton a5=new JButton(&Ave&); JButton a6=new JButton(&Sum&); JButton a7=new JButton(&S&); JButton a8=new JButton(&Dat&); JButton a9=new JButton(&F-E&); JButton a10=new JButton(&dms&); JButton a11=new JButton(&sin&); JButton a12=new JButton(&cos&); JButton a13=new JButton(&tan&); JButton a14=new JButton(&(&); JButton a15=new JButton(&Exp&); JButton a16=new JButton(&x^y&); JButton a17=new JButton(&x^3&); JButton a18=new JButton(&x^2&); JButton a19=new JButton(&)&); JButton a20=new JButton(&In&); JButton a21=new JButton(&log&); JButton a22=new JButton(&n!&); JButton a23=new JButton(&1/x&); JButton a24=new JButton(&MC&); JButton a25=new JButton(&MR&); JButton a26=new JButton(&MS&); JButton a27=new JButton(&M+&); JButton a28=new JButton(&pi&); JButton a29=new JButton(&7&); JButton a30=new JButton(&4&); JButton a31=new JButton(&1&); JButton a32=new JButton(&0&); JButton a33=new JButton(&A&); JButton a34=new JButton(&8&); JButton a35=new JButton(&5&); JButton a36=new JButton(&2&); JButton a37=new JButton(&+/-&); JButton a38=new JButton(&B&); JButton a39=new JButton(&9&); JButton a40=new JButton(&6&); JButton a41=new JButton(&3&); JButton a42=new JButton(&.&); JButton a43=new JButton(&C&); JButton a44=new JButton(&/&); JButton a45=new JButton(&*&); JButton a46=new JButton(&-&); JButton a47=new JButton(&+&); JButton a48=new JButton(&D&); JButton a49=new JButton(&Mod&); JButton a50=new JButton(&Or&); JButton a51=new JButton(&Lsh&); JButton a52=new JButton(&=&); JButton a53=new JButton(&E&); JButton a54=new JButton(&And&); JButton a55=new JButton(&Xor&); JButton a56=new JButton(&Not&); JButton a57=new JButton(&Int&); JButton a58=new JButton(&F&);Jsq() {
super(&计算器&);
setSize(900,360);
setVisible(true);
Container con=getContentPane();
JPanel panel1=new JPanel();//菜单栏和文本
panel1.setLayout(new GridLayout(2,1));
bar.add(menu1);
bar.add(menu2);
bar.add(menu3);
panel1.add(bar);
panel1.add(text);
JPanel panel2=new JPanel();//单选框
panel2.setLayout(new GridLayout(1,2));
ButtonGroup cbg1=new ButtonGroup();
cbg1.add(c1);
cbg1.add(c2);
cbg1.add(c3);
cbg1.add(c4);
JPanel jp1=new JPanel();
jp1.setLayout(new FlowLayout());
jp1.add(c1);jp1.add(c2);jp1.add(c3);jp1.add(c4);
ButtonGroup cbg2=new ButtonGroup();
cbg2.add(d1);
cbg2.add(d2);
cbg2.add(d3);
JPanel jp2=new JPanel();
jp2.setLayout(new FlowLayout());
jp2.add(d1);
jp2.add(d2);
jp2.add(d3);
panel2.add(jp1);
panel2.add(jp2);JPanel panel3=new JPanel();//复选框
panel3.setLayout(new FlowLayout(FlowLayout.CENTER,20,5));
panel3.add(e1);
panel3.add(e2);
panel3.add(lb1);lb1.setEditable(false);
panel3.add(lb2);lb2.setEditable(false);
JPanel panel4=new JPanel();//三个按钮
panel4.setLayout(new FlowLayout(FlowLayout.CENTER,3,5));
panel4.add(a1);
panel4.add(a2);
panel4.add(a3);
JPanel panel5=new JPanel();//第一列按钮
panel5.setLayout(new GridLayout(5,1,3,3));
panel5.add(a4);
panel5.add(a5);
panel5.add(a6);
panel5.add(a7);
panel5.add(a8);
JPanel panel6=new JPanel();//第二三四列按钮
panel6.setLayout(new GridLayout(5,3,3,3));
panel6.add(a9);
panel6.add(a14);
panel6.add(a19);
panel6.add(a10);
panel6.add(a15);
panel6.add(a20);
panel6.add(a11);
panel6.add(a16);
panel6.add(a21);
panel6.add(a12);
panel6.add(a17);
panel6.add(a22);
panel6.add(a13);
panel6.add(a18);
panel6.add(a23);
JPanel panel7=new JPanel();//第五列按钮
panel7.setLayout(new GridLayout(5,1,3,3));
panel7.add(a24);
panel7.add(a25);
panel7.add(a26);
panel7.add(a27);
panel7.add(a28);
JPanel panel8=new JPanel();//第六七八九十十一列按钮
panel8.setLayout(new GridLayout(5,6,3,3));
panel8.add(a29);panel8.add(a34);panel8.add(a39);panel8.add(a44);panel8.add(a49);panel8.add(a54);
panel8.add(a30);panel8.add(a35);panel8.add(a40);panel8.add(a45);panel8.add(a50);panel8.add(a55);
panel8.add(a31);panel8.add(a36);panel8.add(a41);panel8.add(a46);panel8.add(a51);panel8.add(a56);
panel8.add(a32);panel8.add(a37);panel8.add(a42);panel8.add(a47);panel8.add(a52);panel8.add(a57);
panel8.add(a33);panel8.add(a38);panel8.add(a43);panel8.add(a48);panel8.add(a53);panel8.add(a58);
JPanel panel9=new JPanel();//前五列按钮添加入同一个面板
panel9.setLayout(new FlowLayout(FlowLayout.CENTER,20,0));
panel9.add(panel5);
panel9.add(panel6);
panel9.add(panel7);
JPanel panel12=new JPanel();//复选框与三个按钮添加入同一面板
panel12.setLayout(new GridLayout(1,2,200,5));
panel12.add(panel3);
panel12.add(panel4);
JPanel panel10=new JPanel();//十一列按钮添加入同一面板
panel10.setLayout(new FlowLayout(FlowLayout.CENTER,50,3));
panel10.add(panel9);
panel10.add(panel8);
JPanel panel11=new JPanel();//单选框与菜单文本添加入同一面板
panel11.setLayout(new GridLayout(3,1));
panel11.add(panel1);
panel11.add(panel2);
panel11.add(panel12);
con.setLayout(new GridLayout(2,1));//三大块面板合一
con.add(panel11);
con.add(panel10);
validate();
addWindowListener(new WindowCloser()); }public class WindowCloser extends WindowAdapter {
public void windowClosing(WindowEvent we)
System.exit(0);
} }}public class Ex9_3{ public static void main(String[] args) { new Jsq(); }}
为您推荐:
其他类似问题
您可能关注的内容
计算器的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。[基础题]2.(*)利用接口做参数,写个计算器,能完成加减乘除运算。
/*2.(*)利用接口做参数,写个计算器,能完成加减乘除运算。
(1)定义一个接口Compute含有一个方法int computer(int n, int m)。
(2)设计四个类分别实现此接口,完成加减乘除运算。
(3)设计一个类UseCompute,类中含有方法:public void useCom(Compute com, int one, int two),此方法能够用传递过来的对象调用computer方法完成运算,并输出运算的结果。
(4)设计一个主类Test,调用UseCompute中的方法useCom来完成加减乘除运算*/
package HomeWork_10;
public class Test_02 {//(4)
public static void main(String[] args) {
UseCompute uc = new UseCompute();
s1 = new Add();
s2 = new Sub();
s3 = new Mul();
s4 = new Div();
System.out.print("和:");uc.useCom(s1,4,2);
System.out.print("差:");uc.useCom(s2,4,2);
System.out.print("积:");uc.useCom(s3,4,2);
System.out.print("商:");uc.useCom(s4,4,2);
interface Compute{//(1)接口
int compute(int n,int m);
class Add implements Compute{//(2)
int compute(int n,int m){
class Sub implements Compute{//(2)
int compute(int n,int m){
class Mul implements Compute{//(2)
public int compute(int n,int m){
return n*m;
class Div implements Compute{//(2)
public int compute (int n,int m){
return n/m;
class UseCompute{//(3)
Compute com就是Compute com =new Compute(); com.compute
//new个com对象,对象调用方法,把one和two传参进去
public void useCom(Compute com, int one, int two){//方法名,传参
System.out.println(com.compute(one,two));
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!用Java编写一个泛型计算器类_百度知道
用Java编写一个泛型计算器类
我想编写一个泛型计算器类,要求如下:包含加减乘除,就可以了,要具体步骤,最好是有注释
我有更好的答案
class&Num&T&&{&&&&&public&Number&add(T&a,&T&b)&{&&&&&&&&&&&&&Double&n1&=&Double.parseDouble(a.toString());&&&&&&&&Double&n2&=&Double.parseDouble(b.toString());&&&&&&&&return&n1&+&n2;&&&&}}&public&class&Test5&{&&&&&public&static&void&main(String[]&args)&{&&&&&&&&Num&num&=&new&Num();&&&&&&&&//返回值是Number可以调方法转化任意数值类型&&&&&&&&System.out.println(num.add(5.00,&10));&&&&}}这里我用的是double,含金量高在这里注意异常符号问题多加一个参数判断一下,忘记了 &字符串就可以 &用switch比较好
采纳率:100%
class com{public int add(int a,int b){x=a;&/p&&p&y=b;&/p&&p&return result=x+y;&/p&&p&}一下类推就可以了,简单
可以给个地址么?我以邮件的方式发给你
为您推荐:
其他类似问题
您可能关注的内容
泛型的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java编写计算器的思路是怎样的?_百度知道
java编写计算器的思路是怎样的?
分几部分别干什么要注意哪些地方???
我有更好的答案
public class Cheshi extends JFrame {
private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5);
private JTextField textbox = new JTextField(&0&);
private CalculatorCore core = new CalculatorCore();
private ActionListener listener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
JButton b = (JButton) e.getSource();
String label = b.getText();
String result = core.process(label);
textbox.setText(result);
public Cheshi(String title) throws HeadlessException {
super(title);
// 调用父类构造方法
setupFrame();
// 调整窗体属性
setupControls();
// 创建控件
private void setupControls() {
setupDisplayPanel();
// 创建文本面板
setupButtonsPanel();
// 创建按钮面板
// 创建按钮面板并添加按钮
private void setupButtonsPanel() {
JPanel panel = new JPanel();
panel.setBorder(border);
panel.setLayout(new GridLayout(4, 5, 3, 3));
createButtons(panel, new String[]{
&7&, &8&, &9&, &+&, &C&,
&4&, &5&, &6&, &-&, &CE&,
&1&, &2&, &3&, &*&, &&,
// 空字符串表示这个位置没有按钮
&0&, &.&, &=&, &/&, &&
this.add(panel, BorderLayout.CENTER);
* 在指定的面板上创建按钮
* @param panel
要创建按钮的面板
* @param labels 按钮文字
private void createButtons(JPanel panel, String[] labels) {
for (String label : labels) {
// 如果 label 为空,则表示创建一个空面板。否则创建一个按钮。
if (label.equals(&&)) {
panel.add(new JPanel());
JButton b = new JButton(label);
b.addActionListener(listener);
// 为按钮添加侦听器
panel.add(b);
// 设置显示面板,用一个文本框来作为计算器的显示部分。
private void setupDisplayPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBorder(border);
setupTextbox();
panel.add(textbox, BorderLayout.CENTER);
this.add(panel, BorderLayout.NORTH);
// 调整文本框
private void setupTextbox() {
textbox.setHorizontalAlignment(JTextField.RIGHT);
// 文本右对齐
textbox.setEditable(false);
// 文本框只读
textbox.setBackground(Color.white);
// 文本框背景色为白色
// 调整窗体
private void setupFrame() {
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
// 当窗体关闭时程序结束
this.setLocation(100, 50);
// 设置窗体显示在桌面上的位置
this.setSize(300, 200);
// 设置窗体大小
this.setResizable(false);
// 窗体大小固定
// 程序入口
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Cheshi frame = new Cheshi(&我的计算器&);
frame.setVisible(true);
// 在桌面上显示窗体
* 计算器核心逻辑。这个逻辑只能处理 1~2 个数的运算。
class CalculatorCore {
private String displayText = &0&;
// 要显示的文本
boolean reset =
private BigDecimal number1, number2;
private HashMap&String, Operator& operators = new HashMap&String, Operator&();
private HashMap&String, Processor& processors = new HashMap&String, Processor&();
CalculatorCore() {
setupOperators();
setupProcessors();
// 为每种命令添加处理方式
private void setupProcessors() {
processors.put(&[0-9]&, new Processor() {
public void calculate(String command) {
numberClicked(command);
processors.put(&\\.&, new Processor() {
public void calculate(String command) {
dotClicked();
processors.put(&=&, new Processor() {
public void calculate(String command) {
equalsClicked();
processors.put(&[+\\-*/]&, new Processor() {
public void calculate(String command) {
operatorClicked(command);
processors.put(&C&, new Processor() {
public void calculate(String command) {
clearClicked();
processors.put(&CE&, new Processor() {
public void calculate(String command) {
clearErrorClicked();
// 为每种 operator 添加处理方式
private void setupOperators() {
operators.put(&+&, new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.add(number2);
operators.put(&-&, new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.subtract(number2);
operators.put(&*&, new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.multiply(number2);
operators.put(&/&, new Operator() {
public BigDecimal process(BigDecimal number1, BigDecimal number2) {
return number1.divide(number2, 30, RoundingMode.HALF_UP);
// 根据命令处理。这里的命令实际上就是按钮文本。
public String process(String command) {
for (String pattern : processors.keySet()) {
if (command.matches(pattern)) {
processors.get(pattern).calculate(command);
return displayT
// 当按下 CE 时
private void clearErrorClicked() {
if (operator == null) {
displayText = &0&;
// 当按下 C 时,将计算器置为初始状态。
private void clearClicked() {
operator =
displayText = &0&;
// 当按下 = 时
private void equalsClicked() {
calculateResult();
operator =
// 计算结果
private void calculateResult() {
number2 = new BigDecimal(displayText);
Operator oper = operators.get(operator);
if (oper != null) {
BigDecimal result = oper.process(number1, number2);
displayText = result.toString();
// 当按下 +-*/ 时(这里也可以扩展成其他中间操作符)
private void operatorClicked(String command) {
if (operator != null) {
calculateResult();
number1 = new BigDecimal(displayText);
operator =
// 当按下 . 时
private void dotClicked() {
if (displayText.indexOf(&.&) == -1) {
displayText += &.&;
} else if (reset) {
displayText = &0.&;
// 当按下 0-9 时
private void numberClicked(String command) {
if (reset) {
displayText =
displayText +=
// 运算符处理接口
interface Operator {
BigDecimal process(BigDecimal number1, BigDecimal number2);
// 按钮处理接口
interface Processor {
void calculate(String command);
只要步骤的话看注释就行了
采纳率:46%
CSDN 下载一个 文档 代码 都齐全
知道百度的话。就应该知道查下啊!百度搜
为您推荐:
其他类似问题
您可能关注的内容
计算器的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 c 编写计算器 的文章

 

随机推荐