java双重循环逻辑训练

本文深入探讨了Java编程中双重循环的应用,通过实例解析其逻辑结构和常见问题,旨在提升开发者在算法和程序设计上的技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.util.Scanner;

public class Demo20 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
//        System.out.println("输入宽度*的个数");
//        int wide = scanner.nextInt();
//        System.out.println("输入高度*的个数");
//        int height = scanner.nextInt();
        int height = 5;
        int wide = 5;
        System.out.println("打印实心正方形");
        //打印正方形
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < wide; j++) {
                System.out.print("*\t");
            }
            System.out.print("\n");
        }
        System.out.println();
        System.out.println("打印空心正方形");
        //打印空心正方形
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < wide; j++) {
                if (i==0){
                    System.out.print("*\t");//首行全打印
                }
                else if (i==height-1){
                    System.out.print("*\t");//末行全打印
                }
                else {
                    if (j==0){
                        System.out.print("*\t");//首列打印
                    }
                    else if(j==wide-1){
                        System.out.print("*\t");//末列打印
                    }
                    else System.out.print(" \t");//中间打印空格
                }

            }
            System.out.print("\n");
        }
        System.out.println();
        //打印直角三角形
        System.out.println("打印直角三角形_变量状态实现");
        for (int i = 0; i < height; i++) {
            int n=0;
            for (int j = 0; j < wide; j++) {
                System.out.print("*\t");
                n++;
                if (n>i) break;
            }
            System.out.print("\n");
        }
        System.out.println();

        System.out.println("打印直角三角形_非判断循环实现");
        for (int i = 0; i < height; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print("*\t");

            }
            System.out.print("\n");
        }
        System.out.println();

        System.out.println("打印倒直角三角形_变量状态实现");
        //打印倒直角三角形
        for (int i = 0; i < height; i++) {
            int n=height-1;
            for (int j = 0; j < wide; j++) {
                System.out.print("*\t");
                n--;
                if (n<i) break;
            }
            System.out.print("\n");
        }
        System.out.println("打印倒直角三角形_反向循环实现");
        //打印倒直角三角形
        //非状态控制,用反向循环实现
        for (int i = 0; i < height; i++) {
            for (int j = wide-i-1; j >= 0; j--) {
                System.out.print("*\t");
            }
            System.out.print("\n");
        }

        System.out.println("打印等腰三角型");
        //打印等腰三角形
        //height等于wide才能打印出等腰三角形
        int n=0;//作为中间值扩散打印范围的变量
        if (wide % 2 !=0){//输入的wide必须为奇数
            for (int i = 0; i < wide; i++) {
                int middle = (wide-1)/2;
                for (int j = 0; j < wide; j++) {
                    //当高度是偶数打印 否则奇数不打印
                    if(i % 2 == 0){
                        if((middle-n)<= j&&j <=(middle+n)){//j落在中间值与n的范围才打印*
                            System.out.print("*\t");
                        }
                        else {
                            System.out.print(" \t");//否则打印空格
                        }
                    }
                    else {
                        n++;//奇数不打印的时候,扩散范围自增
                        break;
                    }
                }
                System.out.print("\n");
            }
        }
        else System.out.println("您输入的宽度无法打印出等腰三角形");
        System.out.println("九九乘法表_状态变量实现:");
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j < 10; j++) {
                if(j>=i){//不重复的打印
                    System.out.print(i+"x"+j+"="+i*j+"\t");
                }
            }
            System.out.println();
        }
        System.out.println("九九乘法表_非判断循环实现:");
        //非判断循环
        for (int i = 1; i < 10; i++) {
            for (int j = i; j < 10; j++) {
                    System.out.print(i+"x"+j+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}

效果

打印实心正方形
*	*	*	*	*	
*	*	*	*	*	
*	*	*	*	*	
*	*	*	*	*	
*	*	*	*	*	

打印空心正方形
*	*	*	*	*	
*	 	 	 	*	
*	 	 	 	*	
*	 	 	 	*	
*	*	*	*	*	

打印直角三角形_变量状态实现
*	
*	*	
*	*	*	
*	*	*	*	
*	*	*	*	*	

打印直角三角形_非判断循环实现
*	
*	*	
*	*	*	
*	*	*	*	
*	*	*	*	*	

打印倒直角三角形_变量状态实现
*	*	*	*	*	
*	*	*	*	
*	*	*	
*	*	
*	
打印倒直角三角形_反向循环实现
*	*	*	*	*	
*	*	*	*	
*	*	*	
*	*	
*	
打印等腰三角型
 	 	*	 	 	

 	*	*	*	 	

*	*	*	*	*	

九九乘法表_状态变量实现:
1x1=1	1x2=2	1x3=3	1x4=4	1x5=5	1x6=6	1x7=7	1x8=8	1x9=9	
2x2=4	2x3=6	2x4=8	2x5=10	2x6=12	2x7=14	2x8=16	2x9=18	
3x3=9	3x4=12	3x5=15	3x6=18	3x7=21	3x8=24	3x9=27	
4x4=16	4x5=20	4x6=24	4x7=28	4x8=32	4x9=36	
5x5=25	5x6=30	5x7=35	5x8=40	5x9=45	
6x6=36	6x7=42	6x8=48	6x9=54	
7x7=49	7x8=56	7x9=63	
8x8=64	8x9=72	
9x9=81	

九九乘法表_非判断循环实现:
1x1=1	1x2=2	1x3=3	1x4=4	1x5=5	1x6=6	1x7=7	1x8=8	1x9=9	
2x2=4	2x3=6	2x4=8	2x5=10	2x6=12	2x7=14	2x8=16	2x9=18	
3x3=9	3x4=12	3x5=15	3x6=18	3x7=21	3x8=24	3x9=27	
4x4=16	4x5=20	4x6=24	4x7=28	4x8=32	4x9=36	
5x5=25	5x6=30	5x7=35	5x8=40	5x9=45	
6x6=36	6x7=42	6x8=48	6x9=54	
7x7=49	7x8=56	7x9=63	
8x8=64	8x9=72	
9x9=81	

微信小程序提供了日期时间选择器组件`picker`和日历组件`calendar`,但如果需要自定义样式或者功能,可以考虑封装一个日期时间组件。 以下是一个简单的日期时间组件的封装示例: 1. 在`/components`目录下创建一个`datetime-picker`文件夹,创建`datetime-picker.wxml`、`datetime-picker.wxss`、`datetime-picker.js`和`datetime-picker.json`四个文件。 2. 在`datetime-picker.json`中定义组件的属性: ```json { "component": true, "usingComponents": {}, "properties": { "startDate": { "type": String, "value": "2023-02-15", }, "endDate": { "type": String, "value": "2023-02-20", }, "startTime": { "type": String, "value": "00:00", }, "endTime": { "type": String, "value": "23:59", }, "defaultDate": { "type": String, "value": "", }, "defaultTime": { "type": String, "value": "", }, "format": { "type": String, "value": "datetime", }, "showTime": { "type": Boolean, "value": true, }, "showDate": { "type": Boolean, "value": true, }, "startPlaceholder": { "type": String, "value": "开始时间", }, "endPlaceholder": { "type": String, "value": "结束时间", }, "bind:change": { "type": Function, "value": "", } }, "options": { "styleIsolation": "apply-shared" } } ``` 上述属性中: - `startDate`和`endDate`为日期范围,用于限制可选日期的范围; - `startTime`和`endTime`为时间范围,用于限制可选时间的范围; - `defaultDate`和`defaultTime`为默认值; - `format`为显示格式,支持`datetime`、`date`和`time`三种格式; - `showTime`和`showDate`分别控制是否显示时间和日期选择器; - `startPlaceholder`和`endPlaceholder`为开始时间和结束时间的占位符; - `bind:change`为选择器值变化时的回调函数。 3. 在`datetime-picker.wxml`中定义选择器组件: ```html <view class="datetime-picker"> <view wx:if="{{showDate}}" class="datetime-picker-item"> <picker mode="date" start="{{startDate}}" end="{{endDate}}" value="{{selectedDate}}" bindchange="onDateChange"> <view class="datetime-picker-value"> <text wx:if="{{selectedDate}}">{{selectedDate}}</text> <text wx:else>{{startPlaceholder}}</text> </view> </picker> </view> <view wx:if="{{showTime}}" class="datetime-picker-item"> <picker mode="time" start="{{startTime}}" end="{{endTime}}" value="{{selectedTime}}" bindchange="onTimeChange"> <view class="datetime-picker-value"> <text wx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值