十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
樓上的除法運(yùn)算出錯(cuò),a

大田網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,大田網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為大田上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的大田做網(wǎng)站的公司定做!
/
b取商,a%b取余,同數(shù)學(xué)運(yùn)算是有差異的。還有就是雙精度浮點(diǎn)數(shù)的加減乘除會(huì)損失精度。建議用BigDecimal提供的方法來運(yùn)算。
如:
BigDecimal
a
=
new
BigDecimal(12);
BigDecimal
b
=
new
BigDecimal(5);
加法運(yùn)算:a=a.add(b);
減法運(yùn)算:a=a.subtract(b);
乘法運(yùn)算:a=a.multiply(b);
除法運(yùn)算:a=a.divide(b);
獲取運(yùn)算結(jié)果:a.toString()
,
a.longValue()
,
a.intValue()
.....等等
保留兩位小數(shù),四舍五入:a=a.divide(b).setScale(2,
BigDecimal.ROUND_HALF_UP);
大量方法建議自查api文檔。
double a = 12.0;
double b = 5.0;
int addtion_result = 0;//加法計(jì)算結(jié)果
int substraction_result = 0;//減法計(jì)算結(jié)果
int multipliction_result = 0;//乘法計(jì)算結(jié)果
double divide_result = 0.0;//除法計(jì)算結(jié)果
//加法
addtion_result = (int)(a + b);
//減法
substraction_result = (int)(a - b);
//乘法
multipliction_result = (int)(a * b) ;
//除法
divide_result = a / b;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import oracle.jdbc.driver.OracleDriver;
public class GenPaperServlet extends HttpServlet
{
Connection conn;
Statement stmt;
ResultSet rs;
int total_question_num;
int total_question_in_paper;
int total_paper_num;
String curr_classid;
public GenPaperServlet()
{
conn = null;
stmt = null;
rs = null;
total_question_num = 0;
total_question_in_paper = 0;
total_paper_num = 0;
curr_classid = "";
}
public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
httpservletresponse.setContentType("text/html;charset=GBK");
PrintWriter printwriter = httpservletresponse.getWriter();
printwriter.println("htmlhead/headbodycenter");
printwriter.println("請(qǐng)以POST方式提交");
printwriter.println("/center/body/html");
printwriter.close();
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Vector;
public class calculator
{
String str1="0"; //運(yùn)算數(shù)1 初值一定為0 為了程序的安全
String str2="0"; //運(yùn)算數(shù)2
String fh="+"; //運(yùn)算符
String jg="";//結(jié)果
//狀態(tài)開關(guān) 重要
int k1=1;//開關(guān)1 用于選擇輸入方向 將要寫入str2或 str2
int k2=1;//開關(guān)2 符號(hào)鍵 次數(shù) k21說明進(jìn)行的是2+3-9+8 這樣的多符號(hào)運(yùn)算
int k3=1;//開關(guān)3 str1 是否可以被清0 ==1時(shí)可以 !=1時(shí)不能被清0
int k4=1;//開關(guān)4 str2 同上
int k5=1;//開關(guān)5 控制小數(shù)點(diǎn)可否被錄入 ==1時(shí)可以 !=1 輸入的小數(shù)點(diǎn)被丟掉
JButton jicunqi; //寄存器 記錄 是否連續(xù)按下符號(hào)鍵
Vector vt=new Vector(20,10);
JFrame frame=new JFrame("sunshine---計(jì)算器");
JTextField jg_TextField=new JTextField(jg,20);//20列
JButton clear_Button=new JButton("清除");
JButton button0=new JButton("0");
JButton button1=new JButton("1");
JButton button2=new JButton("2");
JButton button3=new JButton("3");
JButton button4=new JButton("4");
JButton button5=new JButton("5");
JButton button6=new JButton("6");
JButton button7=new JButton("7");
JButton button8=new JButton("8");
JButton button9=new JButton("9");
JButton button_Dian=new JButton(".");
JButton button_jia=new JButton("+");
JButton button_jian=new JButton("-");
JButton button_cheng=new JButton("*");
JButton button_chu=new JButton("/");
JButton button_dy=new JButton("=");
public static void main(String[] args)
{
calculator calculator=new calculator();
}
calculator()
{
jg_TextField.setHorizontalAlignment(JTextField.RIGHT );//文本框 右對(duì)齊
JPanel pan=new JPanel();
pan.setLayout(new GridLayout(4,4,5,5));//四行四列 邊距為5像素
pan.add(button7);
pan.add(button8);
pan.add(button9);
pan.add(button_chu);
pan.add(button4);
pan.add(button5);
pan.add(button6);
pan.add(button_cheng);
pan.add(button1);
pan.add(button2);
pan.add(button3);
pan.add(button_jian);
pan.add(button0);
pan.add(button_Dian);
pan.add(button_dy);
pan.add(button_jia);
pan.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));//pan對(duì)象的邊距
JPanel pan2=new JPanel();
pan2.add(jg_TextField);
JPanel pan3=new JPanel(); //為什么要 多此一句呢? 因?yàn)槲也粫?huì)設(shè)置 按鈕的大小
pan3.setLayout(new FlowLayout());
pan3.add(clear_Button);
//clear_Button.setSize(10,10);//設(shè)置清零按鈕的大小 嗎的 不好使 ??!
frame.setLocation(300, 200); //主窗口 出現(xiàn)在位置
frame.setResizable(false); //不能調(diào)大小
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(pan2,BorderLayout.NORTH);
frame.getContentPane().add(pan,BorderLayout.CENTER);
frame.getContentPane().add(pan3,BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
//以上是 控件 和 布局
//下面是事件處理 程 序
//--------------- 數(shù) 字 鍵 ----------------
class JianTing implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String ss=((JButton)e.getSource()).getText();
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
if (k1==1)
{
if(k3==1)
{
str1="";
k5=1;//還原開關(guān)k5狀態(tài)
}
str1=str1+ss;
//k2=1;
k3=k3+1;
//System.out.println(str1);
jg_TextField.setText(str1);//顯示
}
else if(k1==2)
{
if (k4==1)
{
str2="";
k5=1; //還原開關(guān)k5狀態(tài)
}
str2=str2+ss;
//k2=2;
k4=k4+1;
///////////////測試////////////////
jg_TextField.setText(str2);
}
}
}
//--------符 號(hào)-----------
class JianTing_fh implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String ss2=((JButton)e.getSource()).getText();
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
if(k2==1)
{
k1=2;//開關(guān) k1 為1時(shí),向數(shù)1寫 為2時(shí),向數(shù)2寫
k5=1;
fh=ss2;
k2=k2+1;//按符號(hào)鍵的次數(shù)
}
else
{
int a=vt.size();
JButton c=(JButton)vt.get(a-2); if(!(c.getText().equals("+"))!(c.getText().equals("-"))!(c.getText().equals("*"))!(c.getText().equals("/")))
{
yuns();
str1=jg;
k1=2;//開關(guān) k1 為1時(shí),向數(shù)1寫 為2時(shí),向數(shù)2寫
k5=1;
k4=1;
fh=ss2;
} k2=k2+1;
}
}
}
//--------清除-------
class JianTing_clear implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
k5=1;
k2=1;
k1=1;
k3=1;
k4=1;
str1="0";
str2="0";
fh="";
jg="";
jg_TextField.setText(jg);
vt.clear();
}
}
//----------------等 于 ---------------------
class JianTing_dy implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
yuns();
k1=1; //還原開關(guān)k1狀態(tài)
//str1=jg;
k2=1;
k3=1;//還原開關(guān)k3狀態(tài)
k4=1; //還原開關(guān)k4狀態(tài)
str1=jg; //為7+5=12 +5=17 這種計(jì)算做準(zhǔn)備
}
}
//----------------小數(shù)點(diǎn) ---------------------
class JianTing_xiaos implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
jicunqi=(JButton)e.getSource();
vt.add(jicunqi);
if(k5==1)
{
String ss2=((JButton)e.getSource()).getText();
if (k1==1)
{
if(k3==1)
{
str1="";
k5=1; //還原開關(guān)k5狀態(tài)
}
str1=str1+ss2;
//k2=1;
k3=k3+1;
//System.out.println(str1);
jg_TextField.setText(str1);//顯示
}
else if(k1==2)
{
if (k4==1)
{
str2="";
k5=1; //還原開關(guān)k5狀態(tài)
}
str2=str2+ss2;
//k2=2;
k4=k4+1;
///////////////測試////////////////
jg_TextField.setText(str2);
}
}
k5=k5+1;
}
}
//注冊(cè) 監(jiān)聽器
JianTing_dy jt_dy=new JianTing_dy();
JianTing jt= new JianTing();//臨聽數(shù)字鍵
JianTing_fh jt_fh= new JianTing_fh();//臨 聽符 號(hào)鍵
JianTing_clear jt_c=new JianTing_clear(); //清除鍵
JianTing_xiaos jt_xs=new JianTing_xiaos();// 小數(shù)點(diǎn) 鍵
button7.addActionListener(jt);
button8.addActionListener(jt);
button9.addActionListener(jt);
button_chu.addActionListener(jt_fh);
button4.addActionListener(jt);
button5.addActionListener(jt);
button6.addActionListener(jt);
button_cheng.addActionListener(jt_fh);
button1.addActionListener(jt);
button2.addActionListener(jt);
button3.addActionListener(jt);
button_jian.addActionListener(jt_fh);
button0.addActionListener(jt);
button_Dian.addActionListener(jt_xs);
button_dy.addActionListener(jt_dy);
button_jia.addActionListener(jt_fh);
clear_Button.addActionListener(jt_c);
//關(guān)閉事件處理程序
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
//---------------計(jì) 算------------------
public void yuns()
{
double a2,b2;//運(yùn)算數(shù)1,2
String c=fh;// 運(yùn)算符
double jg2=0 ;//結(jié)果
if (c.equals(""))
{
//System.out.println("請(qǐng)輸入運(yùn)算符");
jg_TextField.setText("請(qǐng)輸入運(yùn)算符");
}
else
{
System.out.println("str1:"+str1);//調(diào)試時(shí) 使 用
System.out.println("str2:"+str2);//調(diào)試時(shí) 使 用
System.out.println("運(yùn)算符:"+fh);//調(diào)試時(shí) 使 用
if (str1.equals(".")) //字符串 "." 轉(zhuǎn)換成double型數(shù)據(jù)時(shí) 會(huì)出錯(cuò) 所以手工轉(zhuǎn)
str1="0.0";
if (str2.equals("."))
str2="0.0";
a2=Double.valueOf(str1).doubleValue();
b2=Double.valueOf(str2).doubleValue();
System.out.println("double型的a2:"+a2); //調(diào)試時(shí) 使 用
System.out.println("double型的b2:"+b2); //調(diào)試時(shí) 使 用
if (c.equals("+"))
{
jg2=a2+b2;
}
if (c.equals("-"))
{
jg2=a2-b2;
}
if (c.equals("*"))
{
jg2=a2*b2;
}
if (c.equals("/"))
{
if(b2==0)
{
jg2=0;//0000000000000 by 0 cu!
}
else
{
jg2=a2/b2;
}
}
System.out.println("double型a2"+fh+"b2結(jié)果:"+jg2);
System.out.println();
jg=((new Double(jg2)).toString());
jg_TextField.setText(jg);
}
}
}