javase练习题4

第一题

  • 语法点:运算符,while,if

  • 编写步骤:

    1. 定义类 Test1
    2. 定义 main方法
    3. 定义变量i为0,i2为10
    4. 使用第一个while循环,当条件为i小于5 时,则进入循环
    5. 循环内,i自增,i2自增
    6. 循环内,使用if判断,当i大于等于 2 并且i2小于15 时,同时输出i和i2的值
    7. 使用第二个while循环,当条件为i2小于20 时,则进入循环
    8. 循环内,i自增,i2自增
    9. 循环内,使用if判断,当i大于8 或者i2小于等于18 时,同时输出i和i2的值
public class Test1 {
    public static void main(String[] args) {


        // 1. 定义类 Test1
        //2. 定义 main方法
        //3. 定义变量i为0,i2为10

        int i=0;
        int i2 =10;
        //4. 使用第一个while循环,当条件为`i小于5` 时,则进入循环

        //5. 循环内,i自增,i2自增
        while (i<5){
            if (i>=2&&i2<15){
                System.out.println(i+"->"+i2);


            }

            i++;
            i2++;

        }
        //6. 循环内,使用if判断,当`i大于等于 2 ` 并且` i2小于15` 时,同时输出i和i2的值
        //7. 使用第二个while循环,当条件为`i2小于20` 时,则进入循环
        //8. 循环内,i自增,i2自增
        //9. 循环内,使用if判断,当`i大于8 ` 或者`i2小于等于18` 时,同时输出i和i2的值
        System.out.println("======================");
        while (i2<20){
            i++;
            i2++;

            if (i>8||i2<=18){

                System.out.println(i+"->"+i2);

            }



        }
    }
}

第二题

  • 语法点:方法,运算符,for,while

  • 编写步骤

  1. 定义类 Test2,定义 main方法

  2. main方法中,定义int类型变量 a为1

  3. 使用while循环,判断a<=5,进入循环.

  4. while循环内部,使用for循环,初始化int类型变量b为1,当b<=5时进入循环, 步进表达式b++

  5. for循环内,不换行输出i并拼接" "

  6. for循环外,输出换行.

  7. for循环外,a自增.

public class Test2 {
    public static void main(String[] args) {


        // 1. 定义类 Test2,定义 main方法
        //
        //2. main方法中,定义int类型变量 a为1
        //
        int a=1;
        //3. 使用while循环,判断a<=5,进入循环.
        while (a<=5){

            for (int b = 1; b <=5; b++) {

                System.out.print(b+" ");

            }
            System.out.println();
            a++;
        }
        //
        //4. while循环内部,使用for循环,初始化int类型变量b为1,当b<=5时进入循环, 步进表达式b++
        //
        //5. for循环内,不换行输出i并拼接" "
        //
        //6. for循环外,输出换行.
        //
        //7. for循环外,a自增.
    }
}

第三题

  • 语法点:运算符,for,if

  • 编写步骤

    1. 定义类 Test5
    2. 定义 main方法
    3. 定义变量jj为20,a为0,b为0
    4. 使用for循环,初始化值ii为0,当ii<jj 时进入循环,步进表达式为ii+=2,jj自减
    5. 循环内,使用if判断ii被3整除,ii赋值给a,并输出ii拼接"Hello"
    6. 不被3整除,ii赋值给b,并输出ii拼接"World"
    7. 循环外,按照格式,打印a与b的乘积
public class Test3 {

    public static void main(String[] args) {


        // 1. 定义类 Test5
        //2. 定义 main方法
        //3. 定义变量jj为20,a为0,b为0

        int jj = 20;
        int a = 0;
        int b = 0;

        //4. 使用for循环,初始化值ii为0,当`ii<jj` 时进入循环,步进表达式为ii+=2,jj自减
        for (int ii = 0; ii < jj; ii += 2, jj--) {
            if (ii % 3 == 0) {

                a = ii;
                System.out.println(ii + "Hell0");

            }else {
                b = ii;
                System.out.println(ii + " World");
            }



        }


        //5. 循环内,使用if判断ii被3整除,ii赋值给a,并输出ii拼接"Hello"
        //6. 不被3整除,ii赋值给b,并输出ii拼接"World"
        //7. 循环外,按照格式,打印a与b的乘积
        System.out.println("a*b=" + (a * b));

    }
}

第四题

  • 语法点:运算符,for,switch

开发提示:

  • 1-12的规律数字,可以使用for循环处理
  • 根据不同的数字,匹配显示不同的文字,可以使用switch匹配
public class Test4 {

    public static void main(String[] args) {

        for (int i = 1; i < 13; i++) {


            switch (i){

                case 1:
                    System.out.println(i+"水瓶");
                    break;
                case 2:
                    System.out.println(i+"双鱼");
                    break;
                case 3:
                    System.out.println(i+"白羊");
                    break;
                case 4:
                    System.out.println(i+"金牛");
                    break;
                case 5:
                    System.out.println(i+"双子");
                    break;
                case 6:
                    System.out.println(i+"巨蟹");
                    break;
                case 7:
                    System.out.println(i+"狮子");
                    break;
                case 8:
                    System.out.println(i+"处女");
                    break;
                case 9:
                    System.out.println(i+"天秤");
                    break;
                case 10:
                    System.out.println(i+"天蝎");
                    break;
                case 11:
                    System.out.println(i+"射手");
                    break;
                case 12:
                    System.out.println(i+"摩羯");
                    break;
                    default:
                        System.out.println("数据输入错误");
                        break;
            }


        }



    }
}

第五题

语法点:运算符,for,if

案例需求:从键盘分别输入年、月、日,使用循环for+if实现,判断这一天是当年的第几天

注:判断一年是否是闰年的标准:

​ 1)可以被4整除,但不可被100整除

​ 2)可以被400整除

  • 开发提示:
    1. 循环1-month月
    2. 在循环中判断该月是31天、30天、28/29天,分别累加
import java.util.Scanner;

public class Test5 {

    public static void main(String[] args) {

        // 语法点:运算符,for,if

        //案例需求:从键盘分别输入年、月、日,使用循环for+if实现,判断这一天是当年的第几天


        // 1键盘录入天数年 月 日
        Scanner input = new Scanner(System.in);
        System.out.println("请输入年:");
        int year = input.nextInt();
        System.out.println("请输入月份:");
        int month = input.nextInt();
        System.out.println("请输入天数:");
        int day = input.nextInt();

        // 首先是判断年份是平年还是闰年
        int two_MonthDays = 0;

        int all_Days = 0;
        int year_Days = 0;

        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {

            two_MonthDays = 28;
            year_Days = 365;
        } else {
            two_MonthDays = 29;
            year_Days = 366;
        }

        // 计算到这一天的总的天数 此时如果是一月份只用见天数提取 其实就是月份减一的天数进行相加

        switch (month - 1) {
            case 11:
                all_Days += 30;
            case 10:
                all_Days += 31;
            case 9:
                all_Days += 30;
            case 8:
                all_Days += 31;
            case 7:
                all_Days += 31;
            case 6:
                all_Days += 30;
            case 5:
                all_Days += 31;
            case 4:
                all_Days += 30;
            case 3:
                all_Days += 31;
            case 2:
                all_Days += two_MonthDays;
            case 1:
                all_Days += 31;


        }
        all_Days += day;
        System.out.println("all_Days = " + all_Days);


    }

}

第六题

案例需求:假设从2000年1月1日开始三天打鱼,两天晒网,从键盘输入今天的日期年、月、日,显示今天是打鱼还是晒网?

import java.util.Scanner;

public class Test6 {

    public static void main(String[] args) {


        // 1键盘录入天数年 月 日
        Scanner input = new Scanner(System.in);
        System.out.println("请输入年:");
        int year = input.nextInt();
        System.out.println("请输入月份:");
        int month = input.nextInt();
        System.out.println("请输入天数:");
        int day = input.nextInt();

        // 首先是判断年份是平年还是闰年
        int two_MonthDays = 0;

        int all_Days=0;
        int year_Days=0;

        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {

            two_MonthDays = 28;
            year_Days=365;
        } else {
            two_MonthDays = 29;
            year_Days=366;
        }

        // 计算到这一天的总的天数 此时如果是一月份只用见天数提取 其实就是月份减一的天数进行相加

        switch (month-1){
            case 11:
                all_Days+=30;
            case 10:
                all_Days+=31;
            case 9:
                all_Days+=30;
            case 8:
                all_Days+=31;
            case 7:
                all_Days+=31;
            case 6:
                all_Days+=30;
            case 5:
                all_Days+=31;
            case 4:
                all_Days+=30;
            case 3:
                all_Days+=31;
            case 2:
                all_Days+=two_MonthDays;
            case 1:
                all_Days+=31;


        }
        all_Days+=day;
        System.out.println("all_Days = " + all_Days);
        // 案例需求:假设从2000年1月1日开始三天打鱼,两天晒网,从键盘输入今天的日期年、月、日,显示今天是打鱼还是晒网
        if (all_Days%5>=4){
            System.out.println("晒网");
        }else {
            System.out.println("打鱼");
        }




    }
}

第七题

  • 打印倒三角形,效果如图所示:

在这里插入图片描述

  • 开发提示:

    • 平面图形涉及到有行有列,考虑到嵌套for循环
    • 一个外循环控制行,两个内循环控制输出内容
    • 一个内循环负责输出空格,另一个内循环输出"*"
public class Test7 {

    public static void main(String[] args) {

        for (int i = 0; i < 5; i++) {


            for (int j = 0; j <5-i; j++) {
                if (j==0){
                    int k=0;
                    while (k<i){
                        System.out.print(" ");
                        k++;
                    }
                }

                System.out.print("* ");

            }
            System.out.println();

        }


    }
}

第八题

  • 打印『X』对称图形,效果如图所示:
    在这里插入图片描述

  • 开发提示:

    • 平面图形涉及到有行有列,考虑到嵌套for循环
    • 一个外循环控制行,一个内循环控制输出内容
    • 在内循环中,根据变量的变化规律,判断输出"O"还是"*"
public class Test8 {

    public static void main(String[] args) {


        for (int i = 1; i < 8; i++) {

            for (int j = 1; j <8 ; j++) {
                if (i==j||j==8-i){
                    System.out.print("O");

                }else {
                    System.out.print("*");

                }

            }
            System.out.println();


        }
    }
}

第九题

  • 打印菱形

在这里插入图片描述

  • 开发提示:

    • 平面图形涉及到有行有列,考虑到嵌套for循环
    • 一个外循环控制行,两个内循环控制输出内容
    • 一个内循环负责输出空格,另一个内循环输出"*"
public class Test9_2 {
	public static void main(String[] args) {
		//上半部分
		for(int i=1;i<=5;i++) {//5行
			for(int j = 1; j <=5-i; j++) {//左上角空格区域
				System.out.print(" ");			
			}
			//打印中间的*和空白等腰三角形
			for(int k=1;k<=2*i-1;k++) {
				if (k==1||k==2*i-1) {
					System.out.print("*");
				}else {
					System.out.print(" ");
				}
			}
			System.out.println();//换行
		}
		//打印菱形下半部分
		for(int i =4;i>=1;i--) {
			//打印左边空心正三角
			for(int j=4;j>=i;j--) {
				System.out.print(" ");
			}
			//打印倒置的等腰三角形
			for(int k=1;k<=2*i-1;k++) {
				if(k==1) {
					System.out.print("*");
				}else if(k==2*i-1){
					System.out.println("*");
				}else {
					System.out.print(" ");
				}
			}
		}
		
		System.out.println();
		
	}
}

版权声明:本文为weixin_52788247原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。