当前位置:编程问答 > JAVA >

急需一個JAVA編程

问题:難度在計算器以上的!!!!真的很急!!!!

謝謝啊……

追问:那還有其他的嗎?

答案:什么意思啊?这个是我以前课程设计做的带日期计算的计算器

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.*;
public class Jisuanqi extends JFrame implements ActionListener{
 String s1="",s2="";
 int e1=0,e2=0,e3=0,e4=0,e5=0,e6=0,day1=0;
 double arg=0;
 boolean isArithmetic=true;              //默认为算术运算
 Boolean start=true;
 String op="=";   
 String strDate="";
    JFrame f=new JFrame("多功能计算器");
 JTextField display=new JTextField("0");
 JLabel sta=new JLabel("算数运算");
 JPanel p=new JPanel();
 JPanel p1=new JPanel();
 JPanel p2=new JPanel();
 JButton b17=new JButton("清零");
 JButton b18=new JButton("转换");
 JButton b19=new JButton("取余");
 JButton b[]=new JButton[16];
 String s[]={"1","2","3","+","4","5","6","-","7","8","9","*",".","0","=","/"};
 public void init(){
 p.setLayout(new GridLayout(4,4));    //计算器键盘设置为网格布局管理器
 f.setLayout(new BorderLayout());
 f.add(p1,"North");
 p1.setLayout(new BorderLayout());
 p1.add(sta,"North");
 p1.add(display,"South");
 display.setEditable(false);
 f.add(p,"Center");
 f.add(p2,"South");
 for(int i=0;i<16;i++){
  b[i]=new JButton(s[i]);
  p.add(b[i]);
  b[i].addActionListener(this);
 }
 p2.add(b17);
 p2.add(b18);
 p2.add(b19);
 b19.addActionListener(this);
 b17.addActionListener(new ActionListener(){   //给清零键增加事件监听器
  public void actionPerformed(ActionEvent e){
    if(isArithmetic){                      //如果是算术运算
     display.setText("0");
     sta.setText("算数运算");     //在label中显示算数运算
     arg=0;
     op="=";
     start=true;
    }
    else{    //是日期计算
     display.setText("");
     sta.setText("日期运算");      //在label中显示日期运算
     strDate="";
     op="=";
     start=true;
    }
   }
  });
 b18.addActionListener(new ActionListener(){          //给转换键增加事件监听器
  public void actionPerformed(ActionEvent e){
  isArithmetic=!isArithmetic;
  if(isArithmetic){    //如果是算术运算
     display.setText("0");
     sta.setText("算数运算");
  }
  else{    //是日期计算
   display.setText("");
   sta.setText("日期运算");
  }
     arg=0;
     strDate="";
     op="=";
     start=true;
   }
  });
 p2.setLayout(new GridLayout(1,2));
 f.setSize(300,300);            //设置框架大小
 f.setVisible(true);                 //设置为可见
 }
 public void actionPerformed(ActionEvent evt){
   String s=evt.getActionCommand();  
  if(isArithmetic){          //如果是算数运算
   if('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.equals(".")){     //如果选择1到9数字或者小数点
    if(start) display.setText(s);
    else display.setText(display.getText()+s);
    start=false;
   }
   else{                    
    if(start){
     if(s.equals("-")){     //重新开始运算时候选择-则为负号
      display.setText(s);
      start=false;
     }
     else op=s;           //计算中间选择-则为运算符
    }
    else{
     double x=Double.parseDouble(display.getText());     //X为文本框中的数字
     calculate(x);                               //调用calculate()方法
       op=s;  start=true;
    }
   }
  }
  else {                   //如果是日期运算
   if('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.equals("/")){     //如果选择0到9或者/
    if(start)    display.setText(s);
    else display.setText(display.getText()+s);
    start=false;
   }
   else{
    GongYuan n=new GongYuan();
    if(s.equals("-")) {
     s1=display.getText();start=true;          //s1为按下减号后文本框内容
    Riqi m=new Riqi();
     m.fenli(s1);
     e1=m.a;           //第一个日期的年
     e2=m.b;           //第一个日期的月
     e3=m.c;           //第一个日期的日
     day1=n.Change(e1,e2,e3);   //转换为天数
    }
    if(s.equals("=")){
     s2=display.getText();     //s2为按下等号后的文本框内容
    Riqi m=new Riqi();
     m.fenli(s2);
     e4=m.a;          //第二个日期的年
     e5=m.b;          //第二个日期 的月
     e6=m.c;          //第二个日期的日
     if(e1>0&&e1<9999&&e2>0&&e2<=12&&e3>0&&e3<=31&&e4>0&&e4<9999&&e5>0&&e5<=12&&e6>0&&e6<=31)
     //129行判断输入的内容格式是否正确
     display.setText(day1-n.Change(e4,e5,e6)+"");   //显示结果
     else display.setText("输入错误");
    }
   }
  }
 }
 public void calculate(double x){
  if(op.equals("+"))    arg+=x;          //加法运算
  else if(op.equals("-"))   arg-=x;          //减法运算
  else if(op.equals("*"))   arg*=x;          //乘法运算
  else if(op.equals("/"))   arg/=x;             //除法运算
  else if(op.equals("取余")) arg%=x;     //取余运算
  else if(op.equals("="))   arg=x;            //选择=号把结果赋值给arg
  display.setText(""+arg);                                         //显示最后结果
}
 public static void main(String args[]){
  Jisuanqi a=new Jisuanqi();
  a.init();
 }
 }
 class Riqi{         
 int a=0,b=0,c=0;
 public void fenli(String s){  //该方法将字符串中的年月日提取出来
  int count=0;
  String year="",month="",day="";
  for(int i=0;i<=s.length()-1;i++){
   if(s.charAt(i)!='/'){
    if(count==0) {
    year+=s.charAt(i);
    a=Integer.parseInt(year);    //将提取的数据强制转换为整形
   }
    if(count==1) {
    month+=s.charAt(i);
    b=Integer.parseInt(month);
    }
       if(count==2){
        day+=s.charAt(i);
       c=Integer.parseInt(day);
       }
   }
   else count+=1;
   }
 }
}
class GongYuan{
 int Change(int a,int b,int c){       //该方法将年月日转换为天数
  int l,m=0,day;
  int month[]={31,28,31,30,31,30,31,31,30,31,30,31};     //平年的1到12月的天数
  l=(a-1)/4;
  for(int i=0;i<b-1;i++)
  m+=month[i];
  day=a*365+l+m+c;
  if(a%4==0&&b>2){
   day=day+1;
  }
  return(day);
 }
}

上一个:武汉java培训机构哪里好?
下一个:java是什么啊?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,