闲着无事,花了两三个小时做了那么一个自己都看不下去的Java小程序,可用来判断三角形的类型,输入三边,可以求出各个角的正弦、余弦以及正切值!
说实话,丑得连自己都看不下去了!
(不喜勿喷!
)
话不多说,上源码:
package triangle;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Panel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Font;
import javax.swing.SwingConstants;
import com.sun.org.apache.bcel.internal.generic.NEW;
import com.sun.org.apache.xalan.internal.xsltc.dom.AbsoluteIterator;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JTable;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;
public class JAVATriangleTest{
private JButton sureButton;
private JButton exitButton;
private JLabel aSide;
private JLabel bSide;
private JLabel cSide;
private JLabel area;
private JLabel circle;
private JLabel triangleLabel;
private JLabel sinLabel;
private JLabel cosLabel;
private JLabel tanLabel;
private JTextField aSideTextField;
private JTextField bSideTextField;
private JTextField cSideTextField;
private JLabel timeJLabel;
private JFrame jFrame=new JFrame("三角形判断器");
private JPanel pan5;
DecimalFormat df=new DecimalFormat("#.00");
SimpleDateFormat sd=new SimpleDateFormat("yyyy年MM月dd日 EEE HH:mm:ss");
public JAVATriangleTest(){
JPanel pan1=new JPanel();
pan1.setLayout(new BorderLayout());
JLabel titleJLabel =new JLabel();
titleJLabel.setFont(new Font("宋体", Font.BOLD, 18));
titleJLabel.setBackground(new Color(0, 255, 51));
titleJLabel.setHorizontalAlignment(SwingConstants.CENTER);
//titleJLabel.setFont(new Font("书体坊米芾体", Font.PLAIN, 40));
titleJLabel.setText("欢迎使用三角形判断器!");
timeJLabel=new JLabel();
timeJLabel.setText(sd.format(new Date()));
titleJLabel.setVisible(true);
pan1.add(titleJLabel,BorderLayout.CENTER);
pan1.add(titleJLabel,BorderLayout.SOUTH);
JPanel pan2=new JPanel();
pan2.setLayout(new GridLayout(7,1,5,5));
aSide=new JLabel();
//aSide.setFont(new Font("书体坊米芾体", Font.PLAIN, 18));
aSide.setText("请输入三角形第一条边 a:");
bSide=new JLabel();
//bSide.setFont(new Font("书体坊米芾体", Font.PLAIN, 18));
bSide.setText("请输入三角形第二条边 b:");
cSide=new JLabel();
//cSide.setFont(new Font("书体坊米芾体", Font.PLAIN, 18));
cSide.setText("请输入三角形第三条边 c:");
pan2.add(aSide);
pan2.add(bSide);
pan2.add(cSide);
JPanel pan3=new JPanel();
aSideTextField=new JTextField();
aSideTextField.setColumns(10);
bSideTextField=new JTextField();
bSideTextField.setColumns(10);
cSideTextField=new JTextField();
cSideTextField.setColumns(10);
pan3.add(aSideTextField);
pan3.add(bSideTextField);
pan3.add(cSideTextField);
pan3.setLayout(new GridLayout(7,1,5,5));
JPanel pan4=new JPanel();
pan4.setBackground(Color.WHITE);
area=new JLabel();
//area.setFont(new Font("书体坊米芾体", Font.PLAIN, 12));
area.setBackground(Color.WHITE);
area.setText(" 面积: ");
circle=new JLabel();
//circle.setFont(new Font("书体坊米芾体", Font.PLAIN, 12));
circle.setText(" 周长: ");
triangleLabel=new JLabel();
//triangleLabel.setFont(new Font("书体坊米芾体", Font.PLAIN, 12));
triangleLabel.setText("三角形类型: ");
sinLabel=new JLabel();
cosLabel=new JLabel();
tanLabel=new JLabel();
pan4.add(area);
pan4.add(circle);
pan4.add(sinLabel);
pan4.add(cosLabel);
pan4.add(tanLabel);
pan4.add(triangleLabel);
pan4.setLayout(new GridLayout(7,1,5,5));
jFrame.getContentPane().add(pan1, BorderLayout.NORTH);
jFrame.getContentPane().add(pan2,BorderLayout.WEST);
jFrame.getContentPane().add(pan3,BorderLayout.CENTER);
jFrame.getContentPane().add(pan4,BorderLayout.EAST);
pan5 = new JPanel();
jFrame.getContentPane().add(pan5, BorderLayout.SOUTH);
sureButton = new JButton("确定");
sureButton.setFont(new Font("书体坊米芾体", Font.PLAIN, 12));
pan5.add(sureButton);
exitButton = new JButton("退出");
exitButton.setFont(new Font("书体坊米芾体", Font.PLAIN, 12));
pan5.add(exitButton);
JButton clearButton=new JButton("清除");
clearButton.setFont(new Font("书体坊米芾体", Font.PLAIN, 12));
pan5.add(clearButton);
jFrame.setBackground(new Color(51, 153, 0));
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setResizable(false);
jFrame.setLocation(450, 200);
jFrame.pack();
jFrame.setVisible(true);
/*
* 为按钮添加响应时间
*/
ActionListener exit=new exitListener();
exitButton.addActionListener(exit);
ActionListener cal=new calculate();
sureButton.addActionListener(cal);
ActionListener clearListener=new clear();
clearButton.addActionListener(clearListener);
}//构造函数
/*
* 按钮按下的时候,主要完成以下个功能
*1, 按钮按下的时候需要一个监听器
*2,完成相应的计算
*3,将得到的计算结果显示在界面上
*/
class exitListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "确定退出?");
System.exit(0);
}
}
class calculate implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String aStr=aSideTextField.getText();
String bStr=bSideTextField.getText();
String cStr=cSideTextField.getText();
float a=(float) Double.parseDouble(aStr);
float b=(float)Double.parseDouble(bStr);
float c=(float)Double.parseDouble(cStr);
/*
* 开始判断三条边
*/
if(a<0.00000001||b<0.0000001||c<0.0000001){
JOptionPane.showMessageDialog(null, "三角形的边不可能小于等于0!");
show("","");
}//if
if(((a+b-c<=0.000001)&&(a+c-b<=0.000001)&&(b+c-a<=0.000001)||(a-b-c>=0.000001)&&(a-c-b>=0.000001)&&(b-c-a>=0.000001))){
//if(!(a+b>c)&&(a+c>b)&&(b+c>a)){
JOptionPane.showMessageDialog(null,"您输入的三条边不满足三角形法则!");
show("","");
}
else{
float Cir=a+b+c; //周长
float p=Cir/2;
float Area=(float) (Math.sqrt(p*(p-a)*(p-b)*(p-c)));//面积
String x=df.format(Cir);
String y=df.format(Area);
show(x, y);
//show(Double.toString(Cir),Double.toString(Area));
triangleType(a, b, c);
}//else
}
}
void show(String x,String y){
area.setText(" 面积: "+y);
circle.setText(" 周长: "+x);
}
void triangleType(float aa,float bb,float cc){
//等腰三角形
if((aa-bb<0.00000001)||(aa-cc<0.00000001)||(bb-cc<0.00000001)){
triangleLabel.setText("这是一个等腰三角形!");
}
//等边三角形
if((aa-cc<0.00001)&&(aa-bb<0.000001)&&(bb-cc<0.000001))
triangleLabel.setText("这是一个等边三角形!");
//直角三角形
if((aa*aa+bb*bb-cc*cc<0.000001)||(aa*aa+cc*cc-bb*bb<0.000001)||(bb*bb+cc*cc-aa*aa<0.000001))
triangleLabel.setText("这是一个直角三角形!");
/*
* 对于一般三角形,接下来是要判断是锐角还是钝角三角形
*/
float cosa=(bb*bb+cc*cc-aa*aa)/(2*bb*cc);
float cosb=(aa*aa+cc*cc-bb*bb)/(2*aa*cc);
float cosc=(bb*bb+aa*aa-cc*cc)/(2*aa*bb);
float sina=(float) Math.sqrt(1-cosa*cosa);
float sinb=(float) Math.sqrt(1-cosb*cosb);
float sinc=(float) Math.sqrt(1-cosc*cosc);
float tana=0;
float tanb=0;
float tanc = 0;
if(Math.abs(cosb)>0.0000001)
tana=sina/cosa;
if(Math.abs(cosb)>0.0000001)
tanb=sina/cosb;
if(Math.abs(cosc)>0.0000001)
tanc=sinc/cosc;
if(cosc>0.0000001)
triangleLabel.setText("这是一个钝角三角形!");
else {
triangleLabel.setText("这是一个锐角三角形!");
}
sinLabel.setText("sin A :"+df.format(sina)+" sin B :"+df.format(sinb)+" sin C :"+df.format(sinc));
cosLabel.setText("cos A :"+df.format(cosa)+" cos B :"+df.format(cosb)+" cos C :"+df.format(cosc));
tanLabel.setText("tan A :"+df.format(tana)+" tan B :"+df.format(tanb)+" tan C :"+df.format(tanc));
}//triangleType
class clear implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
aSideTextField.setText("");
bSideTextField.setText("");
cSideTextField.setText("");
circle.setText("");
area.setText("");
sinLabel.setText("");
cosLabel.setText("");
tanLabel.setText("");
}
}
public static void main(String args[]){
new JAVATriangleTest();
}
}//JAVATriangle