Java学习笔记 Day4 学习之路 循环结构

学习笔记 Day4

循环结构
1. while循环结构
while (/* 循环条件判断 boolean true or false */) {
	// 循环体
	// (循环条件变更)
}
/*
执行流程 :
	当程序运行到while循环体结构,首先判断while之后的表达式是否为true,如果为true,执行循环体再来进行循环条件判断,直到条件为false,终止循环!
*/
/*
while 循环体结构演示
*/
class Demo1{
	public static void main (String[] args) {
		int num = 10;
		while (num > 0) {
		
			System.out.println("aaaaaaa");
			num -= 1;
		
		}

	}
}
2. do while 循环结构
do {
	//循环体
	//(循环条件变更)
} while (循环条件判断 boolean true or false);

/* 
执行流程 : 
	程序执行到 do while 循环结构,首先执行一次循环体(循环体变更操作),再来判断while之后的循环是否为true,true继续循环, false终止循环
	
*/
/*
do while 循环结构演示
*/

class Demo2 {
	public static void main (String[] args) {
		int num = 10;
		do{
			System,out,println("aaaaaa");
			num -= 1;
		} while (num > 0) ;
	}

}
for 循环结构【重点】
for (/*循环条件初始化 ;循环条件判断;循环条件变更*/) {
		//循环体
	}

循环体流程展示

/*
for循环结构演示
*/
class Demo3 {
	public static void main(String[] args) {
		for(int i = 0; i < 4; i++) {
			System.out.println("AR的歌很好听");
		}
	}
}
分支循环的作业
  1. 判断用户输入的字符是不是英文字符,如果是输出yes,不是输出no
import java.util.Scanner;

class Exercise1{
	public static void main(String[] args) {
		char ch1 = 0;
		
		Scanner sc = new Scanner(System.in);
		 
		ch1 = sc.nextLine().charAt(0);
		
		boolean ret1 = ('A' <= ch1 && ch1 <= 'Z');
		boolean ret2 = ('a' <= ch1 && ch1 <= 'z');
		
		if ( ret1 || ret2 ) {
			System.out.println("yes");
		}else {
			System.out.println("No");
		}
		
	}
}

  1. 判断用户输入的工资是不是在5000以上,如果是,输出需要缴税,如果不是,输出不需要缴税
import java.util.Scanner;

class Exercise2{
	public static void main(String[] args) {
		int num = 0;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的工资");
		
		num = sc.nextInt();
		
		if (num > 5000) {
			
			System.out.println("需要缴税哦 亲");
			
		} else {
			System.out.println("你工资太低了 弟弟");
		}
	}
}
  1. 用户输入一个年份,判断这个年份是不是一个闰年。
import java.util.Scanner;

class Exercise3{
	public static void main(String[] args) {
		int year = 0;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入想要查询的年份");
		
		year = sc.nextInt();
		
		if ( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
			System.out.println("闰年");
		} else {
			System.out.println("平年");
		}
	}
}
  1. 输入两个整数,打印两数之差的绝对值。
import java.util.Scanner;

class Exercise4{
	public static void main(String[] args) {
		int num1 = 0;
		int num2 = 0;
		int num3 = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输两个整数");
		
		num1 = sc.nextInt();
		num2 = sc.nextInt();
		
		num3 = num1 - num2;
		
		
		if (num3 > 0) {
			System.out.println("两数之差的绝对值为 :"+num3);
			
		} else {
			System.out.println("两数之差的绝对值为 :"+-num3);
		}
		
	}
}
  1. 输入一个数, 判断是否是偶数,如果是偶数,输出YES,如果是奇数.输出NO
import java.util.Scanner;

class Exercise5{
	public static void main(String[] args) {
		int num1 = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输一个数");
		
		num1 = sc.nextInt();
		
		if (num1 / 2 == 0) {
			System.out.println("yes");
			
		} else {
			System.out.println("no");
		} 
	}
	
}
  1. 输入一个人的年份, 检测这个是否是80后,如果是输出YES,如果不是输出NO(1980-1989年)
import java.util.Scanner;

class Exercise6{
	public static void main(String[] args) {
		
		int year = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的出生年份");
		
		year = sc.nextInt();
		boolean ret = 1980 <= year && year <= 1989;
		
		if (ret) {
			System.out.println("Yes");
		} else {
			System.out.println("no");
		}
		
		
		
	}
}


  1. 展示0 ~ 100以内的所有偶数
class Exercise7 {
	public static void main(String[] args){
		int num = 0;
		System.out.println("以下100以内的偶数 :");	
		for(num = 0;num < 99;num += 2) {
				System.out.println(num);
			}
	}
}
  1. 展示0 ~ 100以内的所有奇数
import java.util.Scanner;

class Exercise6{
	public static void main(String[] args) {
		
		int year = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的出生年份");
		
		year = sc.nextInt();
		boolean ret = 1980 <= year && year <= 1989;
		
		if (ret) {
			System.out.println("Yes");
		} else {
			System.out.println("no");
		}	
	}
}
  1. 计算1 - 150 的和
/*
//自己愚蠢的方法
class Exercise9 {
	public static void main(String[] args){
		int num = 0;
		int i ;
		for (i = 0;i <= 150;i += 1){
			num = num + i;
		}
		System.out.println(num);
	}
}	*/
class Exercise9 {
	public static void main(String[] args){
		System.out.println("结果 :"+ ((1 + 150) * 150 /2));
	}
}
  1. 逢7过!!!
/*
逢7过

100以内
*/
class Exercise10{
	public static void main(String[] args) {
		int num1 = 0;
		for (num1 = 0 ; num1 < 100;num1++) {
			if (num1 % 7 ==0 || num1 % 10 ==7 || num1 / 10 ==7) {
				System.out.println("过");
			} else {
			System.out.println(num1);
			}
		}
		
	}
}
  1. 多种方法打印26个小写字母
class Exercise11 {
	public static void main(String[] args){
	
		char ch= 'a';
		
		while (ch <= 'z') {
			System.out.println(ch);
			ch++;
		}
		
	}
}
  1. 例如:
    输入 5 8;
    计算 5 + 6 + 7 + 8;
    输出 26.
import java.util.Scanner;

class Exercise12 {
	public static void main(String[] args){
		int i = 0;
		int num = 0;
		int num1 = 0;
		int num2 = 0;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("输入一个数字范围");
		
		num1 = sc.nextInt();
		num2 = sc.nextInt();
		if (num1 > num2) {
			int temp = num1;
			num1 = num2;
			num2 = temp;	
		}
		for (i = num1;i <= num2;i += 1) {
				num += i;
		}
		System.out.println("范围的S和为 :"+num);
	}

}
  1. 整数逆序输出, 例如输入一个整数12345,输出5 4 3 2
import java.util.Scanner;

class Exercise13 {
	public static void main(String[] args){
		int num = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("输入整数");
		
		num = sc.nextInt();
		
		while (num != 0) {
			System.out.println(num % 10);
			num = num / 10;
		
		}
		
	}
}
14. 
   *****
   *****
   *****
   *****
   *****

class Exercise14 {
	public static void main(String[] args){
		for (int i =0 ; i < 5; i++) {  //定义行数
			for (int j = 0; j < 5; j++) { // 通过题目确定每一行所需的*号 用for循环方便以后自定义每行有多少*号
			
				System.out.print("*");
		
			}
		System.out.println(); //换行
		}
	}
}
15. 
  *
  **
  ***
  ****
  *****
class Exercise15 {
	public static void main(String[] args){
	for (int i =0 ; i < 5; i++) {  //定义行数
			for (int j = 0; j <= i; j++) { //观察规律 通过变量行数来改变每一行打印的*号 
			
				System.out.print("*");
		
			}
		System.out.println();//换行
	}
}
}
16.   
    
      *
     ***
    *****
   *******
  *********
class Exercise16 {
	public static void main(String[] args){
	for (int i =1 ; i < 6; i++) { //定义行数
			for (int k = 5; k > i  ; k--) { 
			 /*同样观察规律  每一行有多少空格找到与变量行数的关系打印空格
			  比如第一行有 4个空格 第二行是3个 第三行是2个   
			  行数从1开始 5 - 1 = 4 然后变成二 5 - 2 = 3依次类推得到这个语句 */
			
				System.out.print(" ");
		
			}
			for (int j = 0; j < (2 * i) - 1; j++) { //同样观察规律  每一行都是行数的二倍减一个个*号个数
			
				System.out.print("*");
		
			}
		System.out.println(); //换行
	}
}
}

17. 
	*
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

class Exercise17 {
	public static void main(String[] args){
	
	
	
		
		for ( int i = 1;i <= 9;i += 1) { //同样定义层数
			if (i <= 5) {  //将这个菱形分成上下两个部分 看成两个等腰三角  通过上一题来解
				for(int j = 5;j > i  ;j -= 1){  // 上半部分就是上一题的翻版不予赘述    
					System.out.print(" ");
				}
				for (int k = 0;k < 2 * i - 1;k++) {
					System.out.print("*");
				}
				
			} else {
				
				for(int x =0;x < i - 5;x += 1){  
				/*下半部分同样是找规律  下半部分从6层开始 输出空格1个。
				然后是7层输出2个。  8==>>3  9 ==>> 4  可以看到这个时候层数是递增的 空格也是递增的 
				层数与空格的关系是  层数 +或者-某个数 = 空格数。  
				显然不可能是加 所以 6 - 5 = 1; 7 - 5 = 2;依次类推。得到规律。*/


					System.out.print(" ");
				}
				for(int y = 0;y > 2 * (10 - i) - 1;y += 1){
				  /*同样观察规律  6==>>7*;7==>>5*;8==>>3*;9==>>1*,
				    可以发现这是层数升序 *个数则是降序  同样寻找规律 我首先思考的是将固定层数升序变为降序。 
				  	也就是有个固定数来减它。通过这个降序的差来与降序的*数取对应关系来解题
				  	我发现总层数加一与层数的差
				  	10-6 = 4 ; 10 - 7 = 3 ; 10 - 8 = 2 ;10 - 9 = 1;
				  	正好与 7 5 3 1 成 二倍减一的关系。*/
																
					
						System.out.print("*");
						
					} 
						
			}
				
			System.out.println("");	 //换行

		}

		
	}
}

18.  
    A
   ABA
  ABCBA
 ABCDCBA
ABCDEDCBA
 ABCDCBA
  ABCBA
   ABA
    A

/*
这个题是形状是与上一题一致的
所以我直接拿了上一个的程序模板
需要的是将*变成规律的ABC这是本题的本质
也就是对于循环和分支语句的进一步理解
*/
class Exercise18 {
	
	public static void main(String[] args){
	
	
	
		
		for ( int i = 1;i <= 9;i += 1) { 
			if (i <= 5) {  
				for(int j = 5;j > i  ;j -= 1){  
					System.out.print(" ");
				}
					char ch ='A';
				
				for (int k = 0;k < 2 * i - 1;k++) {
					/*
					首先分析这个题目每一层输出的数目还是跟*数量一样
					然后是上半部分ABC每一层A都会变更到与层数相同时候然后开始反序变换
					也就是说有一个关系是它与层数本身的关系
					每一层都是从A开始 说明在进入每一层时ch都会被从新赋予 'A';
					
					整体思路就出来了 进入每一层都首先重新赋值 ch = 'A'
					输出 ch 然后对层数进行判断 
					如果每层输出次数小于层数进行 自加操作直到与层数相同
					然后进行 自减操作
					因为是先输出再进行判断 循环次数与层数的大小关系 
					所以层数要+1 再进行判断
					
					*/
					
					System.out.print(ch);
					if(k + 1 < i) {
						ch++;
					} else {
						ch--;
					}
				}
				
			} else {
				
				for(int x =0;x < i - 5;x += 1){  
					System.out.print(" ");
				}
					char ch ='A';
					for(int y = 0;y < 2 * (10 - i) - 1;y += 1){
						System.out.print(ch);
						if (y + 1 < 10 - i) {
						/*
						下半部分的难点在于反序 而且不符合与层数相同的改变机制了
						但是通过上一题的分析成果
						(总层数+1 - 层数) 就恰好是其改变机制了
						其他的照旧
						*/
							ch++;
						} else {
							ch--;
						}
					} 
				
				
				
			}
				
			System.out.println("");	

		}

		
	}
}
	}
}

19. 
   ###*###
   ##*#*##
   #*###*#
   *#####*
   #*###*#
   ##*#*##
   ###*###
/*
找关系,换行循环和输出循环的和或者差
是总行数除以二


*/
class Exercise19 {
	public static void main(String[] args){
	int step = 7;
	
		for (int i =0 ; i < step; i++) {  
			for (int j = 0; j < step; j++) { 
				if (j + i == step / 2 || j - i == step / 2 || i - j == step / 2 || i + j == (step  / 2) * 3) {
					
					System.out.print("*");
					
				} else {
			
					System.out.print("#");
				}
		
			}
		System.out.println(); //换行
		}
	}
}
		
		

20. 
	自己完成一个爱心~~~~❥(^_-) ❥(^_-)❥(^_-)
class Exercise20 {
/*
自己画的太丑了,果断放弃
*/

       public static void main(String argv[]){
              for(float y = (float) 1.5;y>-1.5;y -=0.1)
              {
                     for(float x= (float) -1.5;x<1.5;x+= 0.05)
                     {
                           float a = x*x+y*y-1;
                           if((a*a*a-x*x*y*y*y)<=0.0)
                           {
                                  
                                  
                                  System.out.print("*");
                           
                           }
                           else
                                  System.out.print(" ");
                     }
                     System.out.println("");
              }
	   }
}




	}

}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值