public class Anser2 { float[] arrays = new float[4]; //主函数入口,如果输入有误则抛出异常 public static void main(String[] args){ System.out.println("面积是:"+new Anser2().getTheArea()); } private double inputStr() { Scanner scan = new Scanner(System.in); double result = 0; System.out.println("请输入三个条边长,来建立一个三角形"); for(int i = 1; i < 4; ){ System.out.println("请输入第"+i+ "边长为:"); int intres = 0; if (scan.hasNext()) { String inputstr = (String) scan.next(); try { intres = Integer.parseInt(inputstr); if(intres <= 0) System.out.println("您输入了一个小于或等与零的数,请重新输入一个数字"); else arrays[i] = intres; i++; }catch (Exception e) { System.out.println("您输入了一个错误字符,请重新输入一个数字"); e.printStackTrace(); } } } return result; } public double getTheArea() { inputStr(); double result = 0; boolean error1 = (arrays[1] + arrays[2]) > arrays[3]; boolean error2 = (arrays[2] + arrays[3]) > arrays[1]; boolean error3 = (arrays[3] + arrays[1]) > arrays[2]; while(!(error1 && error2 && error3)) { System.out.println("当前三条边不可能组成三角型请重新输入"); inputStr(); } float sq = (arrays[1] + arrays[2] + arrays[3]) /2; result = Math.sqrt(sq * (sq - arrays[1]) * (sq - arrays[2]) * (sq - arrays[3])); return result; } }