java三角形判断器_花了两个小时做了那么一个很丑的Java写的三角形判断器.........

这个Java小程序用于判断输入的三条边是否能构成三角形,并计算其类型、周长、面积以及各角度的正弦、余弦和正切值。用户界面简洁,直接输入边长即可得到结果。
摘要由CSDN通过智能技术生成

闲着无事,花了两三个小时做了那么一个自己都看不下去的Java小程序,可用来判断三角形的类型,输入三边,可以求出各个角的正弦、余弦以及正切值!

说实话,丑得连自己都看不下去了!

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png(不喜勿喷!

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png)

话不多说,上源码:

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

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值