请问写一个基础计算器大概有多少行? 就是实现+-*/基础的大概多少行?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //package mycaculater;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class MyCalculater extends JFrame implements ActionListener{ JTextField tf=new JTextField(); String num=""; Double number; int pointCount=0; char operation; JButton b1=new JButton("1"); JButton b2=new JButton("2"); JButton b3=new JButton("3"); JButton b4=new JButton("4"); JButton b5=new JButton("5"); JButton b6=new JButton("6"); JButton b7=new JButton("7"); JButton b8=new JButton("8"); JButton b9=new JButton("9"); JButton b0=new JButton("0"); JButton b10=new JButton("+"); JButton b11=new JButton("-"); JButton b12=new JButton("*"); JButton b13=new JButton("/"); JButton b14=new JButton("="); JButton b15=new JButton("."); JButton b16=new JButton("<-"); JButton b17=new JButton("S"); JButton b18=new JButton("C"); JButton b19=new JButton("+/-"); void buildConstraints(GridBagConstraints gbc,int gx,int gy, int gw,int gh,int wx,int wy){ gbc.gridx=gx; gbc.gridy=gy; gbc.gridwidth=gw; gbc.gridheight=gh; gbc.weightx=wx; gbc.weighty=wy; } public MyCalculater(){ super("MyCaculater"); setBounds(200,200,280,215); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); GridBagLayout exlayout=new GridBagLayout(); GridBagConstraints constraints=new GridBagConstraints(); JPanel expane=new JPanel(); expane.setLayout(exlayout); b0.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); b9.addActionListener(this); b10.addActionListener(this); b11.addActionListener(this); b12.addActionListener(this); b13.addActionListener(this); b14.addActionListener(this); b15.addActionListener(this); b16.addActionListener(this); b17.addActionListener(this); b18.addActionListener(this); b19.addActionListener(this); GridLayout inlayout=new GridLayout(4,5,5,5); JPanel inpane2=new JPanel(); inpane2.setLayout(inlayout); inpane2.add(b1); inpane2.add(b2); inpane2.add(b3); inpane2.add(b10); inpane2.add(b18); inpane2.add(b4); inpane2.add(b5); inpane2.add(b6); inpane2.add(b11); inpane2.add(b16); inpane2.add(b7); inpane2.add(b8); inpane2.add(b9); inpane2.add(b12); inpane2.add(b19); inpane2.add(b0); inpane2.add(b15); inpane2.add(b13); inpane2.add(b17); inpane2.add(b14); tf.setEditable(false); buildConstraints(constraints,0,0,1,1,100,20); constraints.fill=GridBagConstraints.HORIZONTAL; exlayout.setConstraints(tf,constraints); expane.add(tf); buildConstraints(constraints,0,1,1,1,100,80); exlayout.setConstraints(inpane2,constraints); expane.add(inpane2); setContentPane(expane); setVisible(true); } public void actionPerformed(ActionEvent event){ if(event.getSource()==b10){ if(num!=""){// if num have not exact digital,then press +,-*/ button operation='+'; number=new Double(num); num=""; if(pointCount!=0) pointCount=0; } } if(event.getSource()==b11){ if(num!=""){ operation='-'; number=new Double(num); num=""; if(pointCount!=0) pointCount=0; } } if(event.getSource()==b12){ if(num!=""){ operation='*'; number=new Double(num); num=""; if(pointCount!=0) pointCount=0; } } if(event.getSource()==b13){ if(num!=""){ operation='/'; number=new Double(num); num=""; if(pointCount!=0) pointCount=0; } } //number control if(event.getSource()==b1){ num=num+'1'; tf.setText(num); } if(event.getSource()==b2){ num=num+'2'; tf.setText(num); } if(event.getSource()==b3){ num=num+'3'; tf.setText(num); } if(event.getSource()==b4){ num=num+'4'; tf.setText(num); } if(event.getSource()==b5){ num=num+'5'; tf.setText(num); } if(event.getSource()==b6){ num=num+'6'; tf.setText(num); } if(event.getSource()==b7){ num=num+'7'; tf.setText(num); } if(event.getSource()==b8){ num=num+'8'; tf.setText(num); } if(event.getSource()==b9){ num=num+'9'; tf.setText(num); } if(event.getSource()==b0){ num=num+'0'; tf.setText(num); } if(event.getSource()==b15){ if(pointCount==0){ num=num+'.'; pointCount++; } tf.setText(num); } if(event.getSource()==b16){ if(num.length()==1){ num=""; tf.setText(num); char n[]=num.toCharArray(); boolean pointExist=false; for(int i=0;i<=(num.length()-1);i++) { if(n[i]=='.') pointExist=true; break; } if(pointExist==false) pointCount=0; }/////////////////// if(num.length()>1){ num=num.substring(0,num.length()-1); tf.setText(num); char n[]=num.toCharArray(); boolean pointExist=false; for(int i=0;i<=(num.length()-1);i++) { if(n[i]=='.') pointExist=true; break; } if(pointExist==false) pointCount=0; }////////////////// ///////////// } if(event.getSource()==b17){ if(num!=""){ Double n=new Double(num); if(n.doubleValue()>=0){ double display=Math.sqrt(n.doubleValue()); num=""+display; tf.setText(num); } else tf.setText("input error"); } } if(event.getSource()==b18){ num=""; pointCount=0; tf.setText(num); } if(event.getSource()==b19){ if(num!=""){ Double n=new Double(num); if(n.floatValue()>0){ num="-"+n.doubleValue(); tf.setText(num); } else { num=""+(-n.doubleValue()); tf.setText(num); } } } if(event.getSource()==b14){ double result; pointCount=1;//result is a float number with '.' switch (operation){ case '+':if(num!=""){ Double n1=new Double(num); result=n1.doubleValue()+number.doubleValue(); num=""+result; tf.setText(""+result); operation='\0'; number=new Double("0"); n1=null; } break; case '-':if(num!=""){ Double n2=new Double(num); result=number.doubleValue()-n2.doubleValue(); num=""+result; tf.setText(""+result); operation='\0'; number=new Double("0"); n2=null; } break; case '*':if(num!=""){ Double n3=new Double(num); result=number.doubleValue()*n3.doubleValue(); num=""+result; tf.setText(""+result); operation='\0'; number=new Double("0"); n3=null; } break; case '/':if(num!=""){ Double n4=new Double(num); if(n4.doubleValue()!=0){ result=number.doubleValue()/n4.doubleValue(); num=""+result; tf.setText(""+result); number=new Double("0"); operation='\0'; n4=null; } else{ tf.setText("input error"); n4=null; } } break; default : tf.setText(""+num); } } }// end actionPerformed() public static void main(String[] s){ MyCalculater calculater=new MyCalculater(); }}这是我刚学JAV时编的小程序,按顺序粘贴在一块就行了,希望对楼主有帮助!! import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator{ public static void main(String args[]) { CalculatorFrame frame=new CalculatorFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); }}class CalculatorFrame extends JFrame{ public CalculatorFrame() { setTitle("Calculator"); setSize(300,200); CalculatorPanel panel=new CalculatorPanel(); getContentPane().add(panel); }}class CalculatorPanel extends JPanel{ public CalculatorPanel() { setLayout(new BorderLayout()); result=0; lastCommand="="; start=true; display=new JLabel("0"); add(display,BorderLayout.NORTH); ActionListener insert=new InsertAction(); ActionListener command=new CommandAction(); panel=new JPanel(); panel.setLayout(new GridLayout(4,4)); addButton("7",insert); addButton("8",insert); addButton("9",insert); addButton("/",command); addButton("4",insert); addButton("5",insert); addButton("6",insert); addButton("*",command); addButton("1",insert); addButton("2",insert); addButton("3",insert); addButton("-",command); addButton("0",insert); addButton(".",insert); addButton("=",command); addButton("+",command); add(panel,BorderLayout.CENTER); } private void addButton(String label,ActionListener listener) { JButton button=new JButton(label); button.addActionListener(listener); panel.add(button); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent e) { String input=e.getActionCommand(); if(start) { display.setText(""); start=false; } display.setText(display.getText()+input); } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent e) { String command=e.getActionCommand(); if(start) { if(command.equals("-")) { display.setText(command); start=false; } else lastCommand=command; } else { calculate(Double.parseDouble(display.getText())); lastCommand=command; start=true; } } } public void calculate(double x) { if(lastCommand.equals("+"))result+=x; else if(lastCommand.equals("-"))result-=x; else if(lastCommand.equals("*"))result*=x; else if(lastCommand.equals("/"))result/=x; else if(lastCommand.equals("="))result=x; display.setText(""+result); } private JLabel display; private JPanel panel; private double result; private String lastCommand; private boolean start;}我的,用了126,界面做得很简单,lz可以考虑改一下 java核心技术和Java 2入门经典好吗 英语词频统计计算,如何实现? 有关Class类加载的问题。。。 一个面试题 用java的applet调用delphi封装第三方动态库函数的exe文件出错,急!!!!!分不够再加 关于try-catch的一个问题 shape程序,不太理解!多次运行产生不同结果! 问一个关于innner class的 问题 : 有关Jsp中的onMouseMove事件等(半天结帖) 怎么从Applet获知网页被刷新了,或者在刷新前通知Applet 编码转换问题? 如何精确控制每个蓝木的宽度啊,JTable
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyCalculater extends JFrame implements ActionListener{
JTextField tf=new JTextField();
String num="";
Double number;
int pointCount=0; char operation; JButton b1=new JButton("1");
JButton b2=new JButton("2");
JButton b3=new JButton("3");
JButton b4=new JButton("4");
JButton b5=new JButton("5");
JButton b6=new JButton("6");
JButton b7=new JButton("7");
JButton b8=new JButton("8");
JButton b9=new JButton("9");
JButton b0=new JButton("0");
JButton b10=new JButton("+");
JButton b11=new JButton("-");
JButton b12=new JButton("*");
JButton b13=new JButton("/");
JButton b14=new JButton("=");
JButton b15=new JButton(".");
JButton b16=new JButton("<-");
JButton b17=new JButton("S");
JButton b18=new JButton("C");
JButton b19=new JButton("+/-");
void buildConstraints(GridBagConstraints gbc,int gx,int gy,
int gw,int gh,int wx,int wy){
gbc.gridx=gx;
gbc.gridy=gy;
gbc.gridwidth=gw;
gbc.gridheight=gh;
gbc.weightx=wx;
gbc.weighty=wy;
}
public MyCalculater(){
super("MyCaculater");
setBounds(200,200,280,215);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
GridBagLayout exlayout=new GridBagLayout();
GridBagConstraints constraints=new GridBagConstraints();
JPanel expane=new JPanel();
expane.setLayout(exlayout);
b0.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);
b9.addActionListener(this);
b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this);
b17.addActionListener(this);
b18.addActionListener(this);
b19.addActionListener(this);
GridLayout inlayout=new GridLayout(4,5,5,5);
JPanel inpane2=new JPanel();
inpane2.setLayout(inlayout);
inpane2.add(b1);
inpane2.add(b2);
inpane2.add(b3);
inpane2.add(b10);
inpane2.add(b18);
inpane2.add(b4);
inpane2.add(b5);
inpane2.add(b6);
inpane2.add(b11);
inpane2.add(b16);
inpane2.add(b7);
inpane2.add(b8);
inpane2.add(b9);
inpane2.add(b12);
inpane2.add(b19);
inpane2.add(b0);
inpane2.add(b15);
inpane2.add(b13);
inpane2.add(b17);
inpane2.add(b14);
tf.setEditable(false);
buildConstraints(constraints,0,0,1,1,100,20);
constraints.fill=GridBagConstraints.HORIZONTAL;
exlayout.setConstraints(tf,constraints);
expane.add(tf);
buildConstraints(constraints,0,1,1,1,100,80);
exlayout.setConstraints(inpane2,constraints);
expane.add(inpane2);
setContentPane(expane);
setVisible(true);
}
public void actionPerformed(ActionEvent event){
if(event.getSource()==b10){
if(num!=""){// if num have not exact digital,then press +,-*/ button
operation='+';
number=new Double(num);
num="";
if(pointCount!=0)
pointCount=0;
}
}
if(event.getSource()==b11){
if(num!=""){
operation='-';
number=new Double(num);
num="";
if(pointCount!=0)
pointCount=0;
}
}
if(event.getSource()==b12){
if(num!=""){
operation='*';
number=new Double(num);
num="";
if(pointCount!=0)
pointCount=0;
}
}
if(event.getSource()==b13){
if(num!=""){
operation='/';
number=new Double(num);
num="";
if(pointCount!=0)
pointCount=0;
}
}
//number control
if(event.getSource()==b1){
num=num+'1';
tf.setText(num);
}
if(event.getSource()==b2){
num=num+'2';
tf.setText(num);
}
if(event.getSource()==b3){
num=num+'3';
tf.setText(num);
}
if(event.getSource()==b4){
num=num+'4';
tf.setText(num);
}
if(event.getSource()==b5){
num=num+'5';
tf.setText(num);
}
if(event.getSource()==b6){
num=num+'6';
tf.setText(num);
}
if(event.getSource()==b7){
num=num+'7';
tf.setText(num);
}
if(event.getSource()==b8){
num=num+'8';
tf.setText(num);
}
if(event.getSource()==b9){
num=num+'9';
tf.setText(num);
}
if(event.getSource()==b0){
num=num+'0';
tf.setText(num);
}
if(event.getSource()==b15){
if(pointCount==0){
num=num+'.';
pointCount++;
}
tf.setText(num);
}
if(event.getSource()==b16){
if(num.length()==1){
num="";
tf.setText(num);
char n[]=num.toCharArray();
boolean pointExist=false;
for(int i=0;i<=(num.length()-1);i++)
{
if(n[i]=='.')
pointExist=true;
break;
}
if(pointExist==false)
pointCount=0;
}///////////////////
if(num.length()>1){
num=num.substring(0,num.length()-1);
tf.setText(num);
char n[]=num.toCharArray();
boolean pointExist=false;
for(int i=0;i<=(num.length()-1);i++)
{
if(n[i]=='.')
pointExist=true;
break;
}
if(pointExist==false)
pointCount=0;
}////////////////// /////////////
}
if(event.getSource()==b17){
if(num!=""){
Double n=new Double(num);
if(n.doubleValue()>=0){
double display=Math.sqrt(n.doubleValue());
num=""+display;
tf.setText(num);
}
else
tf.setText("input error");
}
}
if(event.getSource()==b18){
num="";
pointCount=0;
tf.setText(num);
}
if(event.getSource()==b19){
if(num!=""){
Double n=new Double(num);
if(n.floatValue()>0){
num="-"+n.doubleValue();
tf.setText(num);
}
else {
num=""+(-n.doubleValue());
tf.setText(num);
}
}
}
if(event.getSource()==b14){
double result;
pointCount=1;//result is a float number with '.'
switch (operation){
case '+':if(num!=""){
Double n1=new Double(num);
result=n1.doubleValue()+number.doubleValue();
num=""+result;
tf.setText(""+result);
operation='\0';
number=new Double("0");
n1=null;
}
break;
case '-':if(num!=""){
Double n2=new Double(num);
result=number.doubleValue()-n2.doubleValue();
num=""+result;
tf.setText(""+result);
operation='\0';
number=new Double("0");
n2=null;
}
break;
case '*':if(num!=""){
Double n3=new Double(num);
result=number.doubleValue()*n3.doubleValue();
num=""+result;
tf.setText(""+result);
operation='\0';
number=new Double("0");
n3=null;
}
break;
case '/':if(num!=""){
Double n4=new Double(num);
if(n4.doubleValue()!=0){
result=number.doubleValue()/n4.doubleValue();
num=""+result;
tf.setText(""+result);
number=new Double("0");
operation='\0';
n4=null;
}
else{
tf.setText("input error");
n4=null;
}
}
break;
default : tf.setText(""+num);
}
}
}// end actionPerformed()
public static void main(String[] s){
MyCalculater calculater=new MyCalculater();
}
}
这是我刚学JAV时编的小程序,按顺序粘贴在一块就行了,希望对楼主有帮助!!
import java.awt.event.*;
import javax.swing.*;public class Calculator
{
public static void main(String args[])
{
CalculatorFrame frame=new CalculatorFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}class CalculatorFrame extends JFrame
{
public CalculatorFrame()
{
setTitle("Calculator");
setSize(300,200);
CalculatorPanel panel=new CalculatorPanel();
getContentPane().add(panel);
}
}class CalculatorPanel extends JPanel
{
public CalculatorPanel()
{
setLayout(new BorderLayout());
result=0;
lastCommand="=";
start=true;
display=new JLabel("0");
add(display,BorderLayout.NORTH);
ActionListener insert=new InsertAction();
ActionListener command=new CommandAction();
panel=new JPanel();
panel.setLayout(new GridLayout(4,4));
addButton("7",insert);
addButton("8",insert);
addButton("9",insert);
addButton("/",command);
addButton("4",insert);
addButton("5",insert);
addButton("6",insert);
addButton("*",command);
addButton("1",insert);
addButton("2",insert);
addButton("3",insert);
addButton("-",command);
addButton("0",insert);
addButton(".",insert);
addButton("=",command);
addButton("+",command);
add(panel,BorderLayout.CENTER);
}
private void addButton(String label,ActionListener listener)
{
JButton button=new JButton(label);
button.addActionListener(listener);
panel.add(button);
}
private class InsertAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String input=e.getActionCommand();
if(start)
{
display.setText("");
start=false;
}
display.setText(display.getText()+input);
}
}
private class CommandAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String command=e.getActionCommand();
if(start)
{
if(command.equals("-"))
{
display.setText(command);
start=false;
}
else
lastCommand=command;
}
else
{
calculate(Double.parseDouble(display.getText()));
lastCommand=command;
start=true;
}
}
}
public void calculate(double x)
{
if(lastCommand.equals("+"))result+=x;
else if(lastCommand.equals("-"))result-=x;
else if(lastCommand.equals("*"))result*=x;
else if(lastCommand.equals("/"))result/=x;
else if(lastCommand.equals("="))result=x;
display.setText(""+result);
}
private JLabel display;
private JPanel panel;
private double result;
private String lastCommand;
private boolean start;
}我的,用了126,界面做得很简单,lz可以考虑改一下