/* * 使用BufferedReader类 处理输入数据,得到整数 */ import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; public class InputData{ private BufferedReader buf = null; public InputData() { this.buf = new BufferedReader(new InputStreamReader(System.in)); } public String getString(String info) { String temp = null; System.out.print(info); try { temp = this.buf.readLine(); }catch(IOException e) { e.printStackTrace(); } return temp; } public int getInt(String info,String err) { int temp = 0; String str = null; boolean flag = true; while(flag) { str = this.getString(info); if(str.matches("^\\d+$")) { temp = Integer.parseInt(str); flag = false; }else { System.out.println(err); } } return temp; } }; /* * 利用条件运算符的嵌套来完成 * 学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 */ public class Test05 { public static void main(String[] args) throws Exception{ int i = 0; InputData input = new InputData(); i = input.getInt("请输入成绩:","输入成绩格式有误,请重新输入!"); String str1 = i>=90?"A":i>59?"B":"C"; System.out.print("成绩等级为:"); System.out.print(str1); } }; /* * 输入两个正整数m和n,求其最大公约数和最小公倍数。 * 辗转相除法 */ public class Test06 { public static void main(String[] args) { int a = 0; int b = 0; InputData input = new InputData(); a = input.getInt("请输入第一个数字:","输入数据必须是数字,请重新输入!"); b = input.getInt("请输入第二个数字:","输入数据必须是数字,请重新输入!"); int s = a*b/run(a,b); System.out.println("最大公约数为:" + run(a,b)); System.out.println("最大公倍数为:" + s); } public static int run(int m,int n) { int i = Math.max(m, n); int j = Math.min(m, n); int z = i%j; if(z != 0) { return run(j,z); }else return j; } }