《Java语言程序设计(一)》课后习题答案全集

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 /**

* 鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。
* 百钱买百鸡。求鸡翁、鸡母和鸡雏各几何。
* @author 段智敏 */

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

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4