目录

Demo71 (MyTriangle类)创建一个名为MyTriangle的类,它包含如下两个方法: 编写一个测试程序,读入三角形三边的值,若输入有效,则计算面积;否则显示输入无效。

Demo72 (计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数:public static int countLetters(String s),编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数。

Demo73 (数学:平方根的近似求法)有几种实现Math类中sqrt方法的技术。其中一个称为巴比伦法。

Demo74 (回文素数)回文素数是指一个数同时为素数和回文数。例如:131是一个素数,同时也是一个回文素数。数字313和757也是如此。编写程序,显示前100个回文素数。每行显示10个数并且准确对齐,数字中间用空格隔开。

Demo75 (反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。例如:17是一个素数,而71也是一个素数,所以17和71是反素数。编写程序,显示前100个反素数。每行显示10个,并且数字间用空格隔开

Demo76 (梅森素数) 如果一个素数可以写成(2^p)-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数。编写程序,找出p≤31的所有梅森素数,然后显示如下的输出结果:

Demo77 (双素数) 双素数是指一对差值为2的素数。例如:3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数。

Demo78 (几何问题:五边形的面积) 编写一个方法,使用下面的方法头来返回五边形的面积。编写一个主方法,提示用户输入五边形的边,然后显示它的面积。

Demo79 (几何问题:正多边形的面积) 正多边形是一个n条边的多边形,它的每条边的长度都相等,而且所有角的角度也相等(即多边形既是等边又等角的)。编写一个main方法,提示用户输人边的个数以及正多边形的边长,然后显示它的面积。

Demo80 递归解决斐波那契数列


Demo71 (MyTriangle类)创建一个名为MyTriangle的类,它包含如下两个方法: 编写一个测试程序,读入三角形三边的值,若输入有效,则计算面积;否则显示输入无效。

三角形面积的计算公式在编程练习题Demo16中给出。

s = (边1 + 边2 + 边3 ) / 2

面积 = √(s(s - 边1)(s - 边2)(s - 边3))

package Exer2;import java.util.Scanner;public class Demo71 {/*(MyTriangle类)创建一个名为MyTriangle的类,它包含如下两个方法:编写一个测试程序,读入三角形三边的值,若输入有效,则计算面积;否则显示输入无效。三角形面积的计算公式在编程练习题2.19中给出。s = (边1 + 边2 + 边3 ) / 2面积 = √(s(s - 边1)(s - 边2)(s - 边3))*/public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入三角形的三边长:");double side1 = scanner.nextInt();double side2 = scanner.nextInt();double side3 = scanner.nextInt();if (isValid(side1, side2, side3)) {double area = area(side1, side2, side3);System.out.println("三角形的面积为:" + area);} else {System.out.println("输入无效!");}}/* Return true if the sum of any two sides is greater than the third side. */public static boolean isValid(double side1, double side2, double side3) {return side1 + side2 > side3 && side1 + side3 > side2 && side2 + side3 > side1;}/* Return the area of the triangle. */public static double area(double side1, double side2, double side3) {double s = (side1 + side2 + side3) / 2;return Math.pow(s * (s - side1) * (s - side2) * (s - side3), 0.5);}
}

结果:

Demo72 (计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数:public static int countLetters(String s),编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数。

package Exer2;import java.util.Scanner;public class Demo72 {/*(计算一个字符串中字母的个数)编写一个方法,使用下面的方法头计算字符串中的字母个数:public static int countLetters(String s)编写一个测试程序,提示用户输入字符串,然后显示字符串中的字母个数。*/public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.print("请输入一个字符串:");String str = scan.nextLine();System.out.println(str + " 中的字母个数:" + countLetters(str));scan.close();}public static int countLetters(String s) {int count = 0;for (int i = 0; i < s.length(); i++) {if (Character.isLetter(s.charAt(i))) {count++;}}return count;}
}

结果:

Demo73 (数学:平方根的近似求法)有几种实现Math类中sqrt方法的技术。其中一个称为巴比伦法。

它通过使用下面公式的反复计算近似地得到:nextGuess = (lastGuess + n / lastGuess) / 2

当nextGuess和lastGuess几乎相同时,nextGuess 就是平方根的近似值。最初的猜测值可以是任意一个正值(例如1)。这个值就是lastGuess的初始值。如果nextGuess和lastGuess的差小于一个很小的数,比如0.0001,就可以认为nextGuess是n的平方根的近似值;否则,nextGuess就成为lastGuess,近似过程继续执行。实现下面的方法,返回n的平方根。
        public static double sqrt(long n)

package Exer2;public class Demo73 {public static void main(String[] args) {System.out.println(sqrt(5));}public static double sqrt(long n) {double lastGuess = 1;double nextGuess = (lastGuess + n / lastGuess) / 2;while (true) {if (Math.abs(lastGuess - nextGuess) < 0.0001) {break;} else {lastGuess = nextGuess;nextGuess = (lastGuess + n / lastGuess) / 2;}}return nextGuess;}
}

结果:

Demo74 (回文素数)回文素数是指一个数同时为素数和回文数。例如:131是一个素数,同时也是一个回文素数。数字313和757也是如此。编写程序,显示前100个回文素数。每行显示10个数并且准确对齐,数字中间用空格隔开。

如下所示:
2 3 5 7 11 101 131 151 181 191
313 353 373 383 727 757 787 797 919 929

package Exer2;public class Demo74 {/*(回文素数)回文素数是指一个数同时为素数和回文数。例如:131是一个素数,同时也是一个回文素数。数字313和757也是如此。编写程序,显示前100个回文素数。每行显示10个数并且准确对齐,数字中间用空格隔开。如下所示:2 3 5 7 11 101 131 151 181 191313 353 373 383 727 757 787 797 919 929*/public static void main(String[] args) {isPalindromeAndPrimeNum();}public static void isPalindromeAndPrimeNum() {int count = 0;for (int i = 2; i < 1000000; i++) {boolean isFlag = true;for (int j = 2; j <= i / 2; j++) {if (i % j == 0) {isFlag = false;break;}}if (isFlag && reverse(i) == i) {count++;System.out.print(i + " \t ");if (count % 10 == 0) {System.out.println();}}if (count == 100) {break;}}}public static int reverse(int number) {int reverseNum = 0;while (number > 0) {reverseNum *= 10;reverseNum += number % 10;number /= 10;}return reverseNum;}
}

结果:

Demo75 (反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。例如:17是一个素数,而71也是一个素数,所以17和71是反素数。编写程序,显示前100个反素数。每行显示10个,并且数字间用空格隔开

如下所示:
13 17 31 37 71 73 79 97 107113
149 157167179 199 311 337 347 359 389

package Exer2;public class Demo75 {/*(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。例如:17是一个素数,而71也是一个素数,所以17和71是反素数。编写程序,显示前100个反素数。每行显示10个,并且数字间用空格隔开,如下所示:13 17 31 37 71 73 79 97 107 113149 157167179 199 311 337 347 359 389*/public static void main(String[] args) {isEmirp();}private static void isEmirp() {int count = 0;for (int i = 2; i < 10000; i++) {boolean isFlag = true;for (int j = 2; j <= i / 2; j++) {if (i % j == 0) {isFlag = false;break;}}if (isFlag && reverse(i) != i && isPrimeNum(reverse(i))) {count++;System.out.print(i + "  \t");if (count % 10 == 0) {System.out.println();}}if (count == 100) {break;}}}public static boolean isPrimeNum(int number) {for (int i = 2; i <= number / 2; i++) {if (number % i == 0) {return false;}}return true;}private static int reverse(int number) {int reverseNum = 0;while (number > 0) {reverseNum = reverseNum * 10 + number % 10;number /= 10;}return reverseNum;}
}

结果:

Demo76 (梅森素数) 如果一个素数可以写成(2^p)-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数。编写程序,找出p≤31的所有梅森素数,然后显示如下的输出结果:

package Exer2;public class Demo76 {/*(梅森素数) 如果一个素数可以写成(2^p)-1的形式,其中p是某个正整数,那么这个素数就称作梅森素数。\编写程序,找出p≤31的所有梅森素数,然后显示如下的输出结果:*/public static void main(String[] args) {printMersennePrime();}private static void printMersennePrime() {System.out.printf("%s\t\t%s%n","p", "2^p-1");System.out.println("________________");for (int p = 2; p <= 31; p++) {if (isPrimeNum((int)((Math.pow(2, p)) - 1))) {System.out.printf("%s\t\t%s%n",p, (int)((Math.pow(2, p)) - 1));}}}private static boolean isPrimeNum(int number) {for (int i = 2; i < number / 2; i++) {if (number % i == 0) {return false;}}return true;}
}

结果:

Demo77 (双素数) 双素数是指一对差值为2的素数。例如:3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数。

显示结果如下所示:

(3, 5)

(5, 7)

......

package Exer2;public class Demo78 {/*(双素数) 双素数是指一对差值为2的素数。例如:3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数。*/public static void main(String[] args) {for (int i = 2; i < 1000; i++) {if (isPrimeNum(i) && isPrimeNum(i + 2)) {System.out.printf("(%s, %s)%n", i, i + 2);}}}private static boolean isPrimeNum(int num) {for (int i = 2; i <= num / 2; i++) {if (num % i == 0) {return false;}}return true;}
}

结果:

Demo78 (几何问题:五边形的面积) 编写一个方法,使用下面的方法头来返回五边形的面积。编写一个主方法,提示用户输入五边形的边,然后显示它的面积。

五边形的面积可以使用下面的公式计算:面积 = (5 × s²) / (4 × tan(π / 5))

public static double area(double side)
下面是一个运行示例:

package Exer2;import java.util.Scanner;public class Demo78 {/*(几何问题:五边形的面积) 编写一个方法,使用下面的方法头来返回五边形的面积。编写一个主方法,提示用户输入五边形的边,然后显示它的面积。五边形的面积可以使用下面的公式计算:面积 = (5 × s²) / (4 × tan(π / 5))public static double area(double side)*/public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入从五边形的边长:");double side = scan.nextDouble();double area = area(side);System.out.println(area);scan.close();}public static double area(double side) {double area;area = (5 * Math.pow(side, 2)) / (4 * Math.tan(Math.PI / 5));return area;}
}

结果:

Demo79 (几何问题:正多边形的面积) 正多边形是一个n条边的多边形,它的每条边的长度都相等,而且所有角的角度也相等(即多边形既是等边又等角的)。编写一个main方法,提示用户输人边的个数以及正多边形的边长,然后显示它的面积。

计算正多边形面积的公式是:面积 = (n × s²) / (4 × tan(π / n))

使用下面的方法头编写方法,返回正多边形的面积:public static double area(int n,double side)
下面是一个运行示例:

package Exer2;import java.util.Scanner;public class Demo79 {/*(几何问题:正多边形的面积) 正多边形是一个n条边的多边形,它的每条边的长度都相等,而且所有角的角度也相等(即多边形既是等边又等角的)。编写一个main方法,提示用户输人边的个数以及正多边形的边长,然后显示它的面积。计算正多边形面积的公式是:面积 = (n × s²) / (4 × tan(π / n))使用下面的方法头编写方法,返回正多边形的面积:public static double area(int n,double side)*/public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入正多边形边的个数:");int n = scan.nextInt();System.out.println("请输入正多边形的边长:");double side = scan.nextDouble();double area = area(n, side);System.out.println("正多边形的面积为:" + area);scan.close();}public static double area(int n, double side) {return (n * Math.pow(side, 2)) / (4 * Math.tan(Math.PI / n));}
}

结果:

Demo80 递归解决斐波那契数列

package Exer2;import java.util.Scanner;public class Demo80 {/*递归解决斐波那契数列*/public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("请输入项数:");int n = scan.nextInt();System.out.println(fibonacci(n));scan.close();}private static int fibonacci(int n) {if (n == 0) {return 0;}if (n == 1) {return 1;}return fibonacci(n - 1) + fibonacci(n - 2);}
}

结果:

Java编程练习题Demo71-Demo80相关推荐

  1. JAVA编程练习题(50题及答案11-20)

    [程序11] 题目:有1.2.3.4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? public class lianxi11 {public static void main(Str ...

  2. 简单java编程练习题

    https://wenku.baidu.com/view/29919119fc4ffe473268ab05.html

  3. Java编程练习题之冒泡排序

    public class Demo04 {public static void main(String[] args) {// 冒泡排序int[] arr = {9, 2, 4, 7, 1};// 外 ...

  4. java编程练习题_java编程练习题

    设计并实现一个员工(Employee)类,其成员变量有:姓名,性别,工龄,基础工资,岗位津贴,效益工资.成员方法有: (1)计算应付工资 (2)计算个人所得税(3500以下免税,超出3500以上部分按 ...

  5. Java黑皮书课后题第11章:11.3(Account类的子类)在编程练习题9.7中定义了一个Account类来对一个银行账户建模。一个账户有账号、余额、年利率、开户日期等属性,以及存款和取款等方法

    续标题:创建支票账户checking account和储蓄账户saving account两个子类.支票账户有一个透支限定额,但储蓄账户不能透支 题目(续) 题目中提到的编程练习题9.7:以下代码直接 ...

  6. Java黑皮书课后题第10章:*10.20(近似e)编程练习题5.26使用下面数列近似计算e(略),为了得到更好的精度,在计算中使用25位精度的BigDecimal

    10.20(近似e)编程练习题5.26使用下面数列近似计算e(略),为了得到更好的精度,在计算中使用25位精度的BigDecimal 题目 首次尝试 代码 运行 关于揪bug 第二次尝试 代码 运行结 ...

  7. Java黑皮书课后题第10章:***10.8(金融:Tax类)编程练习题8.12使用数组编写一个计算税款的程序。设计一个名为Tax类,该类包含下面的实例数据域

    ***10.8(金融:Tax类)编程练习题8.12使用数组编写一个计算税款的程序.设计一个名为Tax类,该类包含下面的实例数据域 题目 程序解释 代码 Test8.java Test8_Tax.jav ...

  8. Java黑皮书课后题第10章:**10.7(游戏:ATM机)使用编程练习题9.7中创建的Account类来模拟一台ATM级

    **10.7(游戏:ATM机)使用编程练习题9.7中创建的Account类来模拟一台ATM级 题目 程序 代码 Test7.java Test7_Account.java 运行示例 题目 程序 Tes ...

  9. Java黑皮书课后题第8章:*8.15(几何:在一条直线上吗)编程练习题6.39给出了一个方法,用于测试三个点是否在一条直线上。编写下面的方法,检测points数组中所有的点是否都在同一条直线上

    *8.15(几何:在一条直线上吗)编程练习题6.39给出了一个方法,用于测试三个点是否在一条直线上.编写下面的方法,检测points数组中所有的点是否都在同一条直线上 题目 题目描述与运行示例 破题 ...

  10. Java黑皮书课后题第7章:*7.11(统计:计算标准差)编程练习题5.45计算数字的标准差。本题…计算标准差,使用一个数组存储x的每个数。编写测试程序,提示用户输入10个数字,显示平均值和标准差

    7.11(统计:计算标准差)编程练习题5.45计算数字的标准差.本题-计算标准差,使用一个数组存储x的每个数.编写测试程序,提示用户输入10个数字,显示平均值和标准差 题目 题目描述与运行示例 破题 ...

最新文章

  1. GdiPlus[6]: 五种画刷总览
  2. JavaScript的运行模式
  3. bps计算机,bps指的是计算机的什么
  4. 部门选择控件源代码公布
  5. LeetCode 664. 奇怪的打印机(区间DP)
  6. AI如何驱动软件开发?华为云DevCloud 权威专家邀你探讨
  7. 使用C# impersonation进行windows帐号的校验
  8. php simplexmlelement array,php中SimpleXMLElement 对象转换为数组
  9. Linux之lastb命令
  10. 关于handler的再次讨论
  11. Activeperl安装教程MAC苹果电脑
  12. 如何用java调用python的爬虫程序
  13. 2017年 外牌转沪牌 攻略 (沪南路车管所)
  14. 联想 Y7000 安装 扩展 内存条
  15. latex如何打空格
  16. 我私藏的那些实用的终端命令行工具
  17. selenium driver关闭
  18. 追MM“23式”—— GOF 23种设计模式
  19. PB 数据窗口数据导入Excel, 如果存在则追加,不存在则创建。
  20. VMware是什么?

热门文章

  1. Python进阶练习题,新手快码起来
  2. 电脑无限循环cmd代码 Window系统下死循环
  3. 基础知识:计算机网络--《趣谈网络协议》读书笔记
  4. [给创业公司的原生云] ②Spine L1
  5. win10美化--打造专属我的windows
  6. 如何批量查询ip地址归属地等信息?
  7. java怎么控制数据权限_Java权限控制算法
  8. 服务器内部错误文件接收失败,您的接收电子邮件服务器报告发生内部错误.docx...
  9. linux锐捷代码_Linux平台锐捷认证客户端联网方法
  10. 《信号检测与估值理论》Matlab仿真,包括: 高斯-牛顿迭代法对正弦信号参数进行估计