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; } }