Java 流程控制15道练习题(选择&循环)

简介: Java 流程控制15道练习题(选择&循环)

1 (if 语句)读入一个整数,表示一个人的年龄。

读入一个整数,表示一个人的年龄;如果小于6岁,则输出“儿童”,6岁到13岁,输出“少 儿”;14岁到17岁,输出“青少年”;18岁到35岁,输出“青年”;36岁到50岁,输出“中年”; 50岁以上输出“中老年”。

import java.util.Scanner;
public class Demo23010301 {
    public static void main(String [] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个表示年龄的整数");
        int age = input.nextInt();
        if (age<6){
            System.out.println("儿童");
        } else if (age<=17) {
            System.out.println("青少年");
        }else if (age<=35) {
            System.out.println("青年");
        }else if (age<=50) {
            System.out.println("中年");
        }else
            System.out.println("中老年");
  }
}

2 (if语句)计算销售总金额

(if语句)计算销售总金额图书批发商店的某本书的零售价是26.5元/本,

如果客户一次性购买100本以上(包括100本),则每本的价格打9折,

如果客户一次性购买500本以上(包 括500本),则每本的价格打8折并返回1000元给客户,

请分别计算购买8本、150本、600本的应付金额是多少。要求购买书的数量从控制台输入。

import java.util.Scanner;
public class Demo23010302 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入要购买的书的数量");
        int num= input.nextInt();
        double price = 26.5;
        if (num>=500){
            System.out.println("购买"+num+"本书,应付金额是:"+(num*(price*0.8)-1000));
        } else if(num>=100) {
            System.out.println("购买"+num+"本书,应付金额是:"+num*(price*0.9));
        }else
            System.out.println("购买"+num+"本书,应付金额是:"+num*price);
    }
}
//购买8本书,应付金额是:212.0
//购买150本书,应付金额是:3577.5
//购买600.0本书,应付金额是:11720.0


3 (if 语句)读入一个表示年份的整数,判断是否是闰年。

(if 语句)读入一个表示年份的整数,判断是否是闰年。

如何判断一个年份 是否是闰年:

  1. 如果这个年份能够被4 整除,且不能被100 整除,则这一年是闰年。例如,1996 年是闰年,而相应的,1993 年就不是闰年。
  2. 如果这个年份能够被100 整除,则这个数必须要能被400 整除,才是闰年。例如,2000 年是闰年,1900 年不是闰年。
public class Demo230103031 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个表示年份的整数");
        int year = sc.nextInt();
        if (year%4==0&&year%100!=0){
            System.out.println(year + "是闰年");
        } else if (year%100==0&&year%400==0) {
            System.out.println(year + "是闰年");
        }else
            System.out.println(year + "不是闰年");
}

//第二种
import java.util.Scanner;
public class Demo230103032 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个表示年份的整数");
        int year = sc.nextInt();
        if (year%4==0&&year%100!=0||year%100==0&&year%400==0){
            System.out.println(year + "是闰年");
        }else
            System.out.println(year + "不是闰年");
    }
}


4 (switch 语句)读入一个整数

(switch 语句)读入一个整数,如果是1~5 之间,则分别输出5个福娃的名字,否则输出“北京欢迎你”。

import java.util.Scanner;
public class Demo23010304 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个整数");
        int num = sc.nextInt();
        switch (num){
            case 1:
                System.out.println("北北");
                break;
            case 2:
                System.out.println("京京");
                break;
            case 3:
                System.out.println("欢欢");
                break;
            case 4:
                System.out.println("迎迎");
                break;
            case 5:
                System.out.println("妮妮");
                break;
            default:
                System.out.println("北京欢迎你");
                break;
        }

    }
}


5 (switch 语句)读入一个整数或字符,代表季度,输出内容

(switch 语句)读入一个整数或字符,代表季度,输出以下内容:

第一季度:3-5月(春季) 第二季度:6-8月(夏季)

第三季度:9-11月(秋季) 第四季度:12-2月(冬季)

import java.util.Scanner;
public class Demo23010305 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个代表季度的整数或字符");
        int num = sc.nextInt();
        switch (num){
            case 1:
                System.out.println("第一季度:3-5月(春季)");
                break;
            case 2:
                System.out.println("第二季度:6-8月(夏季)");
                break;
            case 3:
                System.out.println("9-11月(秋季)");
                break;
            case 4:
                System.out.println("第四季度:12-2月(冬季)");
                break;
        }
    }
}

6 (局部变量)以下代码运行结果为?简述原因?

public class Demo23010306 {
    public static void main(String[] args){
        int a = 20 ;
        if(a==20){
            int b  = 30 ;
        }
        int  b  =  40 ;
        System .out .println(b);
    }
}

运行结果为40

int b = 30; 作用范围仅仅在if条件里面;

int b = 40; 作用范围在整个main方法里面,作用范围大于if条件语句里面的(int b = 30; );

故而运行结果为40.

7 (for 循环)计算1+2+3+…+100 的和

public class Demo23010307 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <=100; i++) {
            sum =sum +i;
        }
        System.out.println("1+2+3+...+100 的和为:"+sum);
    }
}
//1+2+3+...+100 的和为:5050

8(for 循环)计算1+3+5+…+99 的和

public class Demo23010308 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <=99; i++) {
            if (i%2!=0){
                sum =sum +i;
            }
        }
        System.out.println(sum);
    }
}
//2500

9 (while/do while循环)把7、8 两题用while 循环或do…while 循环改写

//while计算1+2+3+...+100 的和
public class Demo23010309 {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        while (i<=100){
            sum = sum +i;
            i++;
        }
        System.out.println("1+2+3+...+100 的和为:"+sum);//1+2+3+...+100 的和为:5050
    }
//----------------------------------------------------------
//do-while计算1+2+3+...+100 的和
public class Demo23010309 {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        do {
            sum = sum + i;
            i++;
        }while (i<=100);
        System.out.println("1+2+3+...+100 的和为:"+sum);
    }
}
//----------------------------------------------------------
//while计算1+3+5+...+99 的和
public class Demo23010309 {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        while (i<=100){
            if (i%2!=0)
                sum = sum + i;
            i++;
        }
        System.out.println("1+2+3+...+100 的和为:"+sum);
    }
}
//1+2+3+...+100 的和为:2500
//----------------------------------------------------------
//do-while计算1+3+5+...+99 的和
public class Demo23010309 {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        do {
            if (i%2!=0)
                sum = sum + i;
            i++;
        }while (i<=100);
        System.out.println("1+2+3+...+100 的和为:"+sum);
    }
}    

10(for 循环)读入一个小于10 的整数n,输出它的阶乘n

import java.util.Scanner;
public class Demo23010310 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个小于10的整数");
        int n = input.nextInt();
        int fac = 1;
        for (int i = 1; i <=n; i++) {
            fac = fac*i;
        }
        System.out.println("您输入的数字"+n+"的阶乘是:"+fac);
    }
}


11(for 循环)求100 以内所有能被3 整除但不能被5 整除的数字的和

public class Demo23010311 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 0; i < 100; i++) {
            if (i%3==0&&i%5!=0)
                sum =sum +i;
        }
        System.out.println("100以内所有能被3整除但不能被5整除的数字的和是:"+sum);
    }
}
//100以内所有能被3整除但不能被5整除的数字的和是:1368

12 (for循环)输出99 乘法表

public class Demo23010312 {
    public static void main(String[] args) {
        for (int i = 1; i <=9 ; i++) {
            for (int j = 1; j <=i ; j++) {
                System.out.print(j+"*"+i+"="+j*i+"\t");
            }
            System.out.println();
        }
    }
}

13(for循环)计算2000年1月1日到2008年1月1日相距多少天。

(注意闰年)

public class Demo23010313 {
    public static void main(String[] args) {
        int days = 0;
        for (int i = 2000; i <2008 ; i++) {
            if (i%4==0&&i%100!=0||i%400==0){
                days=days+366;
            }
            days=days+365;
        }
        System.out.println(days);
    }
}

14(嵌套循环)*读入一个整数n,输出如下图形

 n = 3
  *
    ***
   *****
 n = 4
  *   1
    ***  3
   *****  5
  *******  7

读入的整数n,就是外层循环的循环次数。

对于每一行,要做的事情:

  1. 输出若干个空格;
  2. 输出若干个星;
  3. 换行。

提示:输出不换行,用System.out.print()。

import java.util.Scanner;
public class Demo23010314 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个整数");
        int n= input.nextInt();
        for (int i = 1; i <= n; i++) {
            for (int j = n-1; j >=i ; j--) {
                System.out.print(" ");
            }
                for (int k = 1; k <=2*i-1 ; k++) {
                    System.out.print("*");
                }
                System.out.println();
        }

    }
}

15(for循环)求水仙花数

提示:所谓水仙花数,是指一个三位数abc,如果满足a³+b³+c³=abc,则abc是水仙花数。

水仙花数

  • 需求:在控制台输出所有的“水仙花数”,水仙花数必须满足如下2个需求:
    1、水仙花数是一个三位数
    2、水仙花数的个位、十位、百位的数字立方和等于原数

分析

  • 定义一个for循环从“100一直到999”。
  • 每次访问数据后,提取该数据的:个位、十位、百位数字。
  • 使用if判断:个位、十位、百位的数字立方和是否等于原数,等于则输出该数据。

水仙花的个数

  • 在循环外定义一个变量count用于记录水仙花数。
  • 每输出水仙花数时,让count++。
package JavaseDemo;
public class Demo23010315 {
    public static void main(String[] args) {
        for (int i = 100; i <=999; i++) {
            //每次访问数据后,提取该数据的:个位、十位、百位数字。
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100;

            //每位数立方和等于本身
            if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) == i){
                System.out.print(i+"\t");
            }
        }
        System.out.println();
        System.out.println("----------------------");
        int count = 0;
        for (int i = 100; i <=999; i++) {
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100;
            //每位数立方和等于本身
            if ((Math.pow(ge,3) + Math.pow(shi,3) + Math.pow(bai,3)) == i){
                count++;
                System.out.print(i+"\t");
            }
        }
        System.out.println();
        System.out.println("水仙花个数是:" + count + "个");
    }
}


public class Demo23010315 {
    public static void main(String[] args) {
        for (int i = 100; i <=999; i++) {
            int a = i / 100;
            int c = i % 10;
            int b = i / 10 % 10;
            if ((c * c * c + b * b * b + a * a * a) == i){
                System.out.print(i+"\t");
            }
        }
    }
}
目录
相关文章
|
1月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中stream API与传统for循环在性能上的对比,通过多个示例分析了不同场景下两者的优劣。作者指出,尽管stream API使代码更简洁,但不当使用会降低可读性和性能,特别是在处理大数据量时。实验结果显示,在多数情况下,普通for循环的性能优于stream API,尤其是在单次操作耗时较短但需多次执行的场景中。文章建议开发者在设计初期就考虑全局流程,避免重复使用stream流,以提升代码质量和性能。
Java循环操作哪个快?
|
1月前
|
Java 程序员 API
Java循环操作哪个快?
本文探讨了Java中Stream API与传统for循环的性能对比及适用场景。作者通过实际案例分析,指出在某些情况下,过度使用Stream API会导致代码可读性和维护性下降。测试结果显示,在数据量较小的情况下,普通for循环的性能优于Stream API,尤其是在涉及多次类似操作时。因此,建议在开发中根据具体需求选择合适的遍历方式,以提高代码的可读性和性能。
Java循环操作哪个快?
|
23天前
|
缓存 监控 Java
Java线程池提交任务流程底层源码与源码解析
【11月更文挑战第30天】嘿,各位技术爱好者们,今天咱们来聊聊Java线程池提交任务的底层源码与源码解析。作为一个资深的Java开发者,我相信你一定对线程池并不陌生。线程池作为并发编程中的一大利器,其重要性不言而喻。今天,我将以对话的方式,带你一步步深入线程池的奥秘,从概述到功能点,再到背景和业务点,最后到底层原理和示例,让你对线程池有一个全新的认识。
51 12
|
1月前
|
小程序 前端开发 算法
|
2月前
|
算法 Java 测试技术
🧑‍💻Java零基础:Java 的循环退出语句 break
【10月更文挑战第16天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
60 6
|
1月前
|
Java API 开发者
Java如何实现企业微信审批流程
大家好,我是V哥。本文分享如何在企业微信中实现审批流程,通过调用企业微信的开放API完成。主要内容包括获取Access Token、创建审批模板、发起审批流程和查询审批结果。提供了一个Java示例代码,帮助开发者快速上手。希望对你有帮助,关注V哥爱编程,编码路上同行。
|
2月前
|
SQL IDE Java
入门Cloud Toolkit:简化你的Java应用开发与部署流程
【10月更文挑战第19天】作为一名长期从事Java开发的程序员,我一直致力于寻找能够简化日常开发工作的工具。在众多工具中,阿里巴巴推出的Cloud Toolkit引起了我的注意。这款免费的插件旨在帮助开发者更轻松地进行开发、测试及部署工作,尤其是在与云服务交互时表现尤为出色。本文将从个人的角度出发,介绍Cloud Toolkit的基本功能及其使用技巧,希望能帮助初学者快速上手这款实用工具。
31 1
|
2月前
|
前端开发 安全 Java
java发布公告的实现流程
构建一个Java公告发布系统涉及到前端界面设计、后端业务逻辑处理、数据库设计与交互、安全性保障等多个环节。通过采用现代的开发框架和最佳实践,可以高效地开发出既安全又易于维护的系统。随着需求的增长,系统还可以进一步扩展,比如增加评论功能、通知订阅、多语言支持等。
50 1
|
3月前
|
Java
java基础(2)循环语句for、while、do...while
本文介绍了Java中的基础循环语句,包括for循环、while循环和do...while循环。文章通过示例代码展示了for循环的基本结构和用法,while循环的先判断后执行逻辑,以及do...while循环的先执行后判断逻辑。这些循环语句在Java编程中非常常用,用于执行重复的任务。
59 4
java基础(2)循环语句for、while、do...while
|
2月前
|
Java 测试技术 数据安全/隐私保护
📖Java零基础-while循环语句的深度解析
【10月更文挑战第6天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
42 1