第4次作业类测试代码+105032014124+高小娟
一、类图:
二、界面及其对应功能:
(1)界面:
(2)功能:
输入的数值超出规定范围
无法构成三角形
输入的数据不是数字
三、代码:
(1)JudgeTriangle:
1 public class JudgeTriangle { 2 /* 3 * 判断是否构成三角形,如果是进一步判断三角形形状 4 */ 5 public static String triangle(int a,int b,int c){ 6 String sort=null; 7 if((a+b>c)&&((c-b)<a)){ 8 if(((a==b)||(b==c))&&(a!=c)){ 9 sort="等腰三角形"; 10 } 11 else if(a==c){ 12 sort="等边三角形"; 13 } 14 else if(a*a+b*b==c*c) 15 sort="直角三角形"; 16 else 17 sort="一般三角形"; 18 } 19 else{ 20 sort="不能构成三角形"; 21 } 22 return sort; 23 } 24 /* 25 * 计算三角形的面积 26 */ 27 public static float triangleArea(int a,int b,int c){ 28 float temp=0; 29 float area=0; 30 temp=(a+b+c)/2; 31 temp=temp*(temp-a)*(temp-b)*(temp-c); 32 area=(float) Math.sqrt(temp); 33 return area; 34 } 35 /* 36 * 计算三角形的周长 37 */ 38 public static int perimeter(int a,int b,int c){ 39 int per=0; 40 per=a+b+c; 41 return per; 42 } 43 }
(2)TriangleInterface:
1 package test03; 2 import java.awt.Font; 3 import java.awt.GridLayout; 4 import java.awt.Color; 5 import java.awt.event.ActionEvent; 6 import java.awt.event.ActionListener; 7 8 import javax.swing.JFrame; 9 import javax.swing.JLabel; 10 import javax.swing.JOptionPane; 11 import javax.swing.JTextField;//文本框 12 import javax.swing.JButton; 13 14 import java.awt.event.WindowEvent; 15 import java.text.DecimalFormat; 16 import java.util.Arrays; 17 import java.awt.event.WindowAdapter; 18 19 public class TriangleInterface { 20 JFrame f=new JFrame("三角形");//实例化窗体对象 21 JLabel label_1=new JLabel("请输入三角形的三条边:"); 22 JLabel label_2=new JLabel("这个三角形是:"); 23 JLabel label_3=new JLabel("面积是:"); 24 JLabel label_4=new JLabel("周长是:"); 25 JLabel label_a=new JLabel("a:"); 26 JLabel label_b=new JLabel("b:"); 27 JLabel label_c=new JLabel("c:"); 28 JTextField text_a=new JTextField(20); 29 JTextField text_b=new JTextField(20); 30 JTextField text_c=new JTextField(20); 31 JTextField text_sort=new JTextField(50); 32 JTextField text_area=new JTextField(30); 33 JTextField text_per=new JTextField(30); 34 JButton button_ok=new JButton("Ok"); 35 JButton button_cancel=new JButton("Cancel"); 36 37 public TriangleInterface() { 38 DecimalFormat df = new DecimalFormat("0.0"); 39 Font font = new Font("华文新魏", Font.BOLD, 23); 40 button_ok.setFont(new Font("华文新魏",Font.BOLD, 25)); 41 button_cancel.setFont(new Font("华文新魏",Font.BOLD, 20)); 42 label_1.setFont(font); 43 label_2.setFont(font); 44 label_3.setFont(font); 45 label_4.setFont(font); 46 label_a.setFont(font); 47 label_b.setFont(font); 48 label_c.setFont(font); 49 button_ok.addActionListener(new ActionListener(){ 50 51 @Override 52 public void actionPerformed(ActionEvent e) { 53 // TODO 自动生成的方法存根 54 String str_1=text_a.getText(); 55 String str_2=text_b.getText(); 56 String str_3=text_c.getText(); 57 boolean isnum_1=isNumeric(str_1); 58 boolean isnum_2=isNumeric(str_2); 59 boolean isnum_3=isNumeric(str_3); 60 if((isnum_1==false)||(isnum_2==false)||(isnum_3==false)){ 61 JOptionPane.showMessageDialog(null, "输入数据有误\n请重新输入", "Attention!", JOptionPane.ERROR_MESSAGE); 62 text_a.setText(""); 63 text_b.setText(""); 64 text_c.setText(""); 65 } 66 else{ 67 int[] length=new int[3]; 68 length[0]= Integer.parseInt(str_1); 69 length[1]= Integer.parseInt(str_2); 70 length[2]= Integer.parseInt(str_3); 71 Arrays.sort(length);//对三条边进行排序 72 if(length[0]<1||length[2]>100){ 73 JOptionPane.showMessageDialog(null, "边的值不在范围内,请重新输入", "Attention!", JOptionPane.ERROR_MESSAGE); 74 text_a.setText(""); 75 text_b.setText(""); 76 text_c.setText(""); 77 } 78 else{ 79 String result=JudgeTriangle.triangle(length[0],length[1],length[2]); 80 float area=JudgeTriangle.triangleArea(length[0],length[1],length[2]); 81 int perime=JudgeTriangle.perimeter(length[0],length[1],length[2]); 82 text_sort.setText(result); 83 if(result.equals("不能构成三角形")){ 84 JOptionPane.showMessageDialog(null, "输入的三条边不能构成三角形\n无法进行面积、周长计算", "Attention!", JOptionPane.ERROR_MESSAGE); 85 } 86 else{ 87 text_area.setText(String.valueOf(area)); 88 text_per.setText(String.valueOf(perime)); 89 } 90 } 91 } 92 } 93 }); 94 button_cancel.addActionListener(new ActionListener(){ 95 96 @Override 97 public void actionPerformed(ActionEvent arg0) { 98 // TODO 自动生成的方法存根 99 text_a.setText(""); 100 text_b.setText(""); 101 text_c.setText(""); 102 text_sort.setText(""); 103 text_area.setText(""); 104 text_per.setText(""); 105 } 106 107 }); 108 f.addWindowListener(new WindowAdapter() { 109 public void windowClosing(WindowEvent e) { 110 System.exit(1); 111 } 112 }); 113 f.setSize(600,395);//设置窗体大小 114 f.setBackground(Color.BLUE); 115 f.setLocation(400, 300); 116 label_1.setBounds(10,15,400,30); 117 label_2.setBounds(50,180,300,30); 118 label_3.setBounds(50,260,200,30); 119 label_4.setBounds(280,260,200,30); 120 label_a.setBounds(50,60,100,20); 121 label_b.setBounds(205,60,100,20); 122 label_c.setBounds(360,60,100,20); 123 text_a.setBounds(80,60,50,30); 124 text_b.setBounds(235,60,50,30); 125 text_c.setBounds(390,60,50,30); 126 text_sort.setBounds(225,180,200,30); 127 text_area.setBounds(150,260,70,30); 128 text_per.setBounds(380,260,70,30); 129 button_ok.setBounds(100,120,80,30); 130 button_cancel.setBounds(250,120,100,30); 131 text_sort.setEnabled(false);//此文本框不可编辑; 132 text_area.setEnabled(false);//此文本框不可编辑; 133 text_per.setEnabled(false);//此文本框不可编辑; 134 f.setLayout(null); 135 f.add(label_1); 136 f.add(label_2); 137 f.add(label_3); 138 f.add(label_4); 139 f.add(label_a); 140 f.add(label_b); 141 f.add(label_c); 142 f.add(text_a); 143 f.add(text_b); 144 f.add(text_c); 145 f.add(text_sort); 146 f.add(text_area); 147 f.add(text_per); 148 f.add(button_ok); 149 f.add(button_cancel); 150 f.setVisible(true); //使组件显示; 151 } 152 public static boolean isNumeric(String str){ 153 for (int i = str.length();--i>=0;){ 154 if (!Character.isDigit(str.charAt(i))){ 155 return false; 156 } 157 } 158 return true; 159 } 160 public static void main(String[] args) { 161 // TODO 自动生成的方法存根 162 new TriangleInterface(); 163 } 164 165 } 166 167