return; // 非法,程序结束 int n = (int) (Math.sqrt(number)); showResult(\平方不超过\ + number + \的最大整数\\nn = \ + n + \;\); } /** * 通过图形界面,得到符合规则的正整数的方法 * @param message - 在弹出的对话框中,显示提示信息message * @param min - 要求此数必须大于等于min */ public int getIntegerNumber(String message, int min) { String str = JOptionPane.showInputDialog(null, \请输入一个正整数\, \提示信息\, JOptionPane.INFORMATION_MESSAGE); int number = -1; try { number = Integer.parseInt(str); // 得到输入的正整数 } catch( Exception e ) { JOptionPane.showMessageDialog(null, \输入非数字字符\\n程序结束\, \错误警告\, JOptionPane.ERROR_MESSAGE); return -1; // 输入的不是数字字符,程序结束 } if (number < min) { JOptionPane.showMessageDialog(null, \输入的数不符合规则,不是正整数\\n程序结束\, \错误警告\, JOptionPane.ERROR_MESSAGE); return -1; // 输入的数不是大于2的正整数时候,程序结束 } else return number; } /** * 弹出对话框,显示结果 * @param str - 需要显示的字符串 */ public void showResult(String str) { JOptionPane.showMessageDialog(null, str, \输出结果\, JOptionPane.INFORMATION_MESSAGE); } public static void main(String[] args) { new Work2_7_2(); } }
6
2.8 输入正整数n,输出由n行n列星号字符组成的三角形图案。
程序运行结果:
源代码文件:Work2_8.java import java.util.*; /**
* 输入正整数n,输出由n行n列星号字符组成的三角形图案。 * @author 段智敏 */
public class Work2_8 { public static void main(String args[]) { Scanner consoleScanner = new Scanner(System.in); System.out.print(\请输入正整数n:\); String str = consoleScanner.next(); int n = -1; try { n = Integer.parseInt(str); } catch( NumberFormatException e ) { System.out.println(\输入非法字符,程序结束!!!\); return; } if (n < 1) System.out.println(\输入的数不是正实数,程序结束!!!\); else { for(int i=0;i 7 2.9 设有整型变量x和y的值分别为5和110。试指出执行了以下循环语句后,变量x和y的值分别多少? 1)while(x<=y) x*=2; 解:x=160 ;y=110; 2)do{x=y/x; y=y-x;}while(y>=1); 解:x=18; y=0; 2.10求小于999的所有水仙花数。 程序运行结果: 源代码文件:Work2_10.java /** * 求小于999的所有水仙花数 * @author 段智敏 */ public class Work2_10 { public static void main(String[] args) { 来存结果的字符串 for (int i = 100; i < 999; i++) } { } System.out.println(resultString.substring(0, if (isNarcissusNumber(i)) resultString += \ + i; String resultString = new String(\之前的所有水仙花数有:\);// 用 resultString.length() - 1)); public static boolean isNarcissusNumber(int m)// 判断是否是水仙花数的 方法 { int number = m;// 把m存起来 int a[] = new int[100];// 用来存n每个位上的数 int amount = 0;// 表示n的位数 while (m > 0)// 通过循环得到m每个位上的数,存到数组中 { } int sum = 0; for (int j = 0; j < amount; j++)// 累加每位上的数的位数次方 a[amount] = m % 10; m = m / 10; amount++; 8 { } if (number == sum)// 如果累加的和等于这个数本身,则他是水仙花数,返回真 return true; sum += Math.pow(a[j], amount); return false; } 2.11 编程序解百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡。求鸡翁、鸡母和鸡雏各几何? 程序运行结果: 源代码文件:Work2_11.java /** * 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。 public class Work2_11 { public static void main(String args[]) { for (int i = 0; i <= 100; i++) { for (int j = 0; j <= 100; j++) { for (int k = 0; k <= 100; k += 3) //鸡雏的个数必须使3的倍数 { if (((5*i + 3 * j + k / 3) == 100) && (i + j + k == 100)) System.out.println(\鸡翁:\ + i + \鸡母:\ + j + \鸡雏:\ + k); } } } } } 2.12 编写程序,按下面的公式计算自然对数底值:e=1+1/1!+1/2!+1/3!+1/4!+...... /** * 按公式计算:e=1+1/1!+1/2!+1/3!+1/4!+...... * @author 段智敏 */ public class Work2_12 { public static void main(String args[]) 9 e的 } { int n = 1000; // 计算精度 double e = 1.0; for (int i = 1; i <= n; i++) { e = e + 1.0 / Work2_12.factorial(i); } System.out.println(\ + e); } /** * 计算阶乘的静态方法 * @param - 需要计算阶乘的数 * @return - 最后结果 */ static double factorial(int a) { double f = 1.0; for (int j = 1; j <= a; j++) f = f * j; return f; } 2.13 编写程序,用如下公式计算圆周率PI的近似值:PI=4-4/3+4/5-4/7+4/9-4/11... 程序运行结果: 源代码文件:Work2_13.java /** * 圆周率计算 * @author 段智敏 */ public class Work2_13 { public static void main(String args[]) { int num = 1000000; // 控制计算的项数,越高,越准确 System.out.println(\用公式计算圆周率,\\n计算\ + num + \项后圆周率的近似值为\ + Work2_13.getPai(num)); System.out.println(\是第\ + Work2_13.getIndex(3.14) + \项,\\t\\t值为:\ + Work2_13.getPai(Work2_13.getIndex(3.14))); System.out.println(\是第\ + Work2_13.getIndex(3.141) + \项,\\t值为:\ + Work2_13.getPai(Work2_13.getIndex(3.141))); System.out.println(\是第\ + Work2_13.getIndex(3.1415) + \ 10
* 百钱买百鸡。求鸡翁、鸡母和鸡雏各几何。
* @author 段智敏 */