• Java入门篇 之 逻辑控制(练习题篇)


    博主碎碎念: 练习题是需要大家自己打的请在自己尝试后再看答案哦;

    个人认为,只要自己努力在将来的某一天一定会看到回报,在看这篇博客的你,不就是在努力吗,所以啊,不要放弃,路上必定坎坷,但是成功后放眼望去,这将是青春很浓重的一笔

    今日份励志文案:若结局非你所愿,请在尘埃落定前奋力一搏

    加油!!!!!

    目录

    一.第一题

    1.1 解题思路

    二.第二题

    2.1 解题思路

    三.第三题

    3.1 解题思路

    四.第四题

    4.1 解题思路

    五.第五题

    5.1 解题思路

    六. 第六题

    6.1 解题思路


    注意:博主的答案并不是唯一的,每道题都有很多种写法,感兴趣的可以自己尝试一下 

    如果看不懂博主的代码,博主个人认为,你对逻辑控制学的不是太扎实,建议看一下博主上一篇对于逻辑控制的讲解

    一.第一题

    题目:计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值 

    1.1 解题思路

    1. 从上述表达式可以分析出

      a. 该表达式主要由100项,基数项为正,偶数项为负

    2. 设置一个循环从1~100,给出表达式中的每一项:1.0/i, 注意此处不能使用1,否则结果全部为0

      然后使用flag标记控制奇偶项,奇数项为正,偶数项为负

      然后将所有的项相加即可

    答案

    1. public static void main(String[] args) {
    2. double sum = 0;
    3. int flg = 1;
    4. for (int i = 1; i <= 100; i++) {
    5. sum += 1.0/i * flg;
    6. flg = -flg;
    7. }
    8. System.out.println(sum);
    9. }

    二.第二题

    题目:输出一个整数的每一位,如:123的每一位是3,2,1

    2.1 解题思路

    本题主要考虑,如何获取一个数字的每一位:

    “ / ”   除法是保留整数

    “ % ” 取余是保留余数

    例如:

    123 % 10 = 3

    123/10=12   12%10=2

    12/10=1       1%10= 1

    代码如下:

    答案

    1. public static void main1(String[] args) {
    2. Scanner scanner=new Scanner(System.in);
    3. System.out.println("请输入一个整数:");
    4. int n = scanner.nextInt();
    5. while (n != 0) {
    6. System.out.print(n % 10+" ");
    7. n /= 10;
    8. }
    9. }

    三.第三题

    题目:编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误, 可以重新输 入,最多输入三次。三次均错,则提示退出程序

    3.1 解题思路

    这道题判断相等用到的是 equals () 判断相等,但是这个方法不适用于基本类型,基本类型的判断用的还是" == " 和" != "

    答案

    1. public static void main(String[] args) {
    2. Scanner scanner = new Scanner(System.in);
    3. int count = 3;
    4. System.out.print("请创建你的密码num=");
    5. String num=scanner.nextLine();
    6. while (count != 0) {
    7. System.out.println("请输入你的密码:");
    8. String password = scanner.nextLine();
    9. //if(password == "123") 这个判断相等是错误的
    10. if(password.equals(num)) {
    11. System.out.println("登录成功!");
    12. break;
    13. }else {
    14. count--;
    15. System.out.println("你还有"+count+" 次机会!");
    16. }
    17. }
    18. }

    四.第四题

    题目:求斐波那契数列的第n项。(迭代实现)

    4.1 解题思路

    斐波那契数列定义为:1 1 2 3 5 8 13 21 我们可以看到,从第3项开始,都等于前一项+前一项的前一项的和。

    3=1+2

    5+2+3

    13 = 5+8

    我们可以先定义f1保存第一项的值,f2保存第2项的值,f3保存第3项的值。

    每次算法一个f3,就同步更新f1和f2的值

    答案

    1. public static int fib(int n) {
    2. if(n == 1 || n == 2 ) {
    3. return 1;
    4. }
    5. int f1 = 1;
    6. int f2 = 1;
    7. int f3 = 1;
    8. for (int i = 3; i <= n; i++) {
    9. f3 = f1+f2;
    10. f1 = f2;
    11. f2 = f3;
    12. }
    13. return f3;
    14. }
    15. public static void main(String[] args){
    16. Scanner scanner =new Scanner(System.in);
    17. System.out.print("请输入斐波那契数列的第n项:");
    18. int n= scanner.nextInt();
    19. int N=fib(n);
    20. System.out.print("斐波那契的第n项是"+N);
    21. }
    22. }

    五.第五题

    题目:在同一个类中,分别定义求两个整数的方法 和 三个小数之和的方法。 并执行代码,求出结果

    5.1 解题思路

    1. 方法名相同
    2. 参数列表不同(数据类型,个数,顺序)
    3. 返回值无关

    答案

    1. public static int sum(int a,int b) {
    2. return a+b;
    3. }
    4. public static double sum(double a,double b,double c) {
    5. return a+b+c;
    6. }
    7. public static void main(String[] args){
    8. Scanner scanner =new Scanner(System.in);
    9. System.out.print("请输入两个整数");
    10. int a=scanner.nextInt();
    11. int b=scanner.nextInt();
    12. int c=sum(a,b);
    13. System.out.print("请输入三个小数");
    14. double d=scanner.nextDouble();
    15. double e=scanner.nextDouble();
    16. double f=scanner.nextDouble();
    17. double g=sum(d,e,f);
    18. System.out.println(c);
    19. System.out.println(g);
    20. }

    六. 第六题

    题目:在同一个类中定义多个方法:要求不仅可以求2个整数的最大值,还可以求3个小数的最大值?

    6.1 解题思路

    本题可以借助Java原生类Math当中的max方法求最大值,也可以自己通过If else进行比较。

    Math的使用 不需要导入相关的包

    答案

    1. public static int max(int a,int b) {
    2. return Math.max(a,b);
    3. }
    4. public static double max(double a,double b,double c) {
    5. double m = Math.max(a,b);
    6. return Math.max(m,c);
    7. }
    8. public static void main(String[] args){
    9. Scanner scanner =new Scanner(System.in);
    10. System.out.print("请输入两个整数");
    11. int a=scanner.nextInt();
    12. int b=scanner.nextInt();
    13. int c=max(a,b);
    14. System.out.print("请输入三个小数");
    15. double d=scanner.nextDouble();
    16. double e=scanner.nextDouble();
    17. double f=scanner.nextDouble();
    18. double g=max(d,e,f);
    19. System.out.println(c);
    20. System.out.println(g);
    21. }

    如果有解释的不对或者不清晰,如果可以从评论区指出,我一定会加以修改,万分感谢

    最后麻烦大佬们动一下发财的小手一键三连,万分感谢

     

  • 相关阅读:
    状态栏铆接部件中心部件
    Ubuntu 22.04 安装水星无线 USB 网卡
    【JavaSE】一起学继承
    Tomcat配置ssl、jar包
    数据结构-b树
    PAT 1029 Median
    Hadoop-MapReduce
    springboot母婴商城系统的设计与实现(文档+源码)
    HLS学习1:点灯
    sql 基础语法
  • 原文地址:https://blog.csdn.net/2201_75886757/article/details/134179997