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



   闲着无事,花了两三个小时做了那么一个自己都看不下去的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


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值