循环语句

第四章 循环语句

4.1 while循环

  • while语句:
  • 示例:猜数字
    在这里插入图片描述
import java.util.*;

public class haha {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int random = (int) (Math.random() * 101);
		while (true) {
			System.out.println("请输入一个数字");
			int n = sc.nextInt();
			if (n > random) {
				System.out.println("输入的值太大,重新输入");

			} else if (n < random) {
				System.out.println("太小,请重新输入");
			} else {
				System.out.println("相同");
				break;
			}
		}
	}
}

4.2 do-while循环

  • do-while语句:
    在这里插入图片描述
  • 示例:用do-while语句猜数字
import java.util.Scanner;

public class Test4_1dowhile {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc = new Scanner(System.in);
		int number = (int) (Math.random() * 101);
		int num = 0;
		do {
			System.out.println("请输入你的猜测");
			num = sc.nextInt();
			if (num > number) {
				System.out.println("输入的值过大");
			} else if (num < number) {
				System.out.println("输入的值太小");
			}
		} while (num != number);

		System.out.println("对了,电脑产生的数是" + number);

	}

}

4.3for循环

  • for语句:
  • for嵌套语句:
    在这里插入图片描述
  • 示例:最大公约数
    在这里插入图片描述
import java.util.*;

public class haha {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入n");
		int n=sc.nextInt();
		System.out.println("请输入m");
		int m=sc.nextInt();
		int min=n>m?m:n;
		int temp=1;
        for(int k=min;k>=1;k--) {
        	if(n%k==0&&m%k==0) {
        		System.out.println("这个数是"+k);
        		break;
        	}
        }
	}
}
  • 示例:预测未来学费
    在这里插入图片描述
import java.util.Scanner;

public class Test4_2xuefe {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
		
		int year=0;
		double xuefei=10000;
		while(xuefei<20000) {
			xuefei*=1.07;
			year++;
		}
		System.out.println("第"+year+"年的学费是10000的两倍");
	}
}

在这里插入图片描述

import java.util.Scanner;
public class Test4_2zhuanhuan {
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		System.out.print("Enter a number:");
		int number=scanner.nextInt();
		String str="";
		while(number!=0){//123 7
			int num=number%16;//11 7
			if(num<10){
				str=num+str;//"7B"      B
			}else{
				switch(num){
					case 10:
						str="A"+str;
						break;
					case 11:
						str="B"+str;
						break;
					case 12:
						str="C"+str;
						break;
					case 13:
						str="D"+str;
						break;
					case 14:
						str="E"+str;
						break;
					case 15:
						str="F"+str;
						break;
				}
			}
			//str B
			number/=16;//7 0
		}
		System.out.println("0X"+str);//7B
	}
}

4.4 嵌套循环

  • 示例:打印直角三角形
import java.util.*;

public class haha {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入n");
		int n = sc.nextInt();
		printf(n);
	}

	private static void printf(int n) {
		// TODO 自动生成的方法存根
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print("* ");
			}
			System.out.println();
		}
	}
}
  • 示例:打印菱形
  • `import java.util.Scanner;

public class haha {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“请输入n”);
int n = sc.nextInt();
printf(n);
}

private static void printf(int n) {
	// TODO 自动生成的方法存根
	for (int i = 1; i <= n; i++) {
		for (int k = 1; k <= Math.abs(i - 5); k++) {
			System.out.print(" ");
		}
		for (int j = 1; j <= i && j + i <= 10; j++) {
			System.out.print("* ");
		}
		System.out.println();
	}
}

}

  • 打印空心菱形`
import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入n");
		int n = sc.nextInt();
		printf(n);
	}

	private static void printf(int n) {
		// TODO 自动生成的方法存根
		for(int i=1;i<=n;i++) {
			for(int k=1;k<=Math.abs(i-5);k++) {
				System.out.print(" ");
			}
			for(int j=1;j<=i&&i+j<=10;j++) {
				if(i==j||j==1||i+j==10) {
					System.out.print("* ");
				}else {
					System.out.print("  ");
				}
			}
			System.out.println();
		}
	}
}

4.5 breakh和continue

  • break语句
  • continue语句
  • return语句
  • 示例:判断回文串
    在这里插入图片描述
import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入回文");
		String s = sc.nextLine();
		judge(s);
	}

	private static void judge(String s) {
		// TODO 自动生成的方法存根
		for (int i = 0; i < s.length() / 2; i++) {
			if (s.charAt(i) != s.charAt(s.length() - 1 - i)) {
				System.out.println("不是回文!");
				return;
			}
		}
		System.out.println("是回文");
	}
}
  • 显示素数
    在这里插入图片描述
public class haha {
	public static void main(String[] args) {
		int count = 0;
		int num = 1;
		while (count <= 50) {
			boolean flag = true;
			for (int i = 2; i <= num / 2; i++) {
				if (num % i == 0) {
					flag = false;
					break;
				}
			}
			if (flag) {
				count++;
				System.out.print(num + " ");
				if (count % 10 == 0) {
					System.out.println();
				}
			}
			num++;
		}
	}
}

本章小结

  1. 循环语句有三类:while循环、do-while循环和for循环。
  2. 循环中包含重复执行的语句称为循环体。
  3. 循环体执行一次称为循环的一次迭代。
  4. 无限循环是指循环语句被无限次执行。
  5. 在设计循环时,既需要考虑循环控制结构,还需要考虑循环体。
  6. while循环首先检查循环继续条件。如果条件为true,则执行循环体;如果条件为false,则循环结束。
  7. do-while循环和while循环类似,只是do-while先执行循环体,再检查循环继续条件,以确定是否继续。
  8. while和do-while常用于循环次数不确定的情况。
  9. for循环一般用于在循环次数固定的情况。
  10. for循环由三部分组成。第一部分是初始操作,通常用于初始化控制变量。第二部分是循环继续条件,决定是否执行循环体。第三部分是每次迭代后执行的操作,经常用于调整控制变量。通常,在控制结构中初始化和修改循环控制变量。
  11. 在循环中可以使用break和continue这两个关键字。
  12. 关键字break立即终止包含break 的最内层循环。
  13. 关键字continue只是终止当前迭代。

编程练习题

4.1 在这里插入图片描述

import java.util.Scanner;
public class Demo4_1 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
       Scanner sc=new Scanner(System.in);
       int countz=0;
       int countf=0;
       int sum=0;
	while(true) {
    	   System.out.println("请输入整数");
    	   int num=sc.nextInt();
    	   if(num>0) {
    		   countz++;
    	   }else if(num<0) {
    		   countf++;
    	   }else {
    		   break;
    	   }
    	   sum+=num;
       }
	System.out.println("正数为"+countz+"个");
	System.out.println("负数为"+countf+"个");
	System.out.println("总和为"+sum);
	System.out.println("平均数为"+(double)sum/(countz+countf));
		   
	}
}

在这里插入图片描述

import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int count=0;
		String firstname="";
		String secondname="";
		int firstscore=0;
		int secondscora=0;
		System.out.println("请输入学生的个数");
		int stdnum=sc.nextInt();
		while(count<stdnum) {
			System.out.println("请输入学生的名字和成绩");
			String name=sc.next();
			int score=sc.nextInt();
			if(score>firstscore) {
				secondscora=firstscore;
				secondname=firstname;
				firstscore=score;
				firstname=name;
			}else {
				secondscora=score;
				secondname=name;
			}
			count++;
		}
		System.out.println("最高分"+firstscore+" 姓名"+firstname);
		System.out.println("第二最高分"+secondscora+" 姓名"+secondname);
	}
}

在这里插入图片描述

import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		int count=0;
		for(int i=100;i<=200;i++) {
			if(i%5==0||i%6==0^i%6==0&&i%5==0) {
				System.out.print(i+" ");
			}
			count++;
			if(count%10==0) {
				System.out.println();
			}
		}
	}
}

在这里插入图片描述

import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入");
		int num = sc.nextInt();
		while (true) {
			boolean flag=false;
			for (int i = 2; i < num / 2; i++) {
				if (num % i == 0) {
					System.out.print(i + ",");
					num /= i;
					flag=true;
					break;	
				}
			}
			if(!flag) {
				System.out.println(num);
				break;
			}
		}
	}
}

在这里插入图片描述

import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入");
		int n=sc.nextInt();
		for(int i=1;i<=n;i++) {
			for(int k=1;k<=n-i;k++) {
				System.out.print("  ");
			}
			for(int j=-i;j<=i;j++) {
				if(j!=0&&j!=1) {
					System.out.print(Math.abs(j)+" ");
				}
			}System.out.println();
		}
	}
}

在这里插入图片描述

public class Demo4_8 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
/*
 *       0  1  2  3  2  1  0
 *      -3-2-1   0  1  2  3    j
 *      j+i-1          i-1-j
 */
		for(int i=1;i<=8;i++) {
			for(int k=0;k<8-i;k++) {
				System.out.print("    ");
			}
			for(int j=1-i;j<i;j++) {
				if(j<=0) {
					System.out.printf("%-4d",(int)Math.pow(2, j+i-1));
				}else {
					System.out.printf("%-4d",(int)Math.pow(2, i-1-j));
				}
			}
			System.out.println();
		}
	}
}

在这里插入图片描述

import java.util.Scanner;

public class haha {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入");
		int n=sc.nextInt();
		double pi=4.0;
		int flag=1;
		double sum=0;
		for(int i=1;i<=n;i++) {
              sum+=(flag*1.0)/(2*i-1);
              flag=-flag;
		}
		System.out.println(pi*sum);
	}
}

在这里插入图片描述

import java.util.Scanner;
public class haha {
	public static void main(String[] args) {
		for(int i=1;i<=10000;i++) {
			int sum=0;
			for(int j=1;j<=i/2;j++) {
				if(i%j==0) {
					sum+=j;
				}
			}
			if(i==sum) {
				System.out.print(i+" ");
			}
		}
	}
}

在这里插入图片描述

import java.util.Scanner;
public class haha {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入一个二进制数");
		int number=sc.nextInt();
		String str="";
		/*
		 *10%2=0~5   10/2=5
		 *
		 *5%2=1~2      5/2=2
		 *
		 *2%2=0~1     2/2=1
		 *
		 *1%2=1 ~0   1/2=0
		 *
		 */
		while(true) {
			int a=number%2;  
			str=a+str;//  
			number/=2;
			if(number==0) {
				break;
			}
		}
		System.out.print(str);
	}
}

在这里插入图片描述

import java.util.Scanner;

public class Demo4_19 {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
		int a[]=new int[5];
		System.out.println("请输入5个数");
		for(int i=0;i<a.length;i++) {
			a[i]=sc.nextInt();
		}
//		int a[]= {3,5,2,5,5,5,0};
		int max = 0;
		int count = 0;
		for (int i = 0; i < a.length - 1; i++) {
			if (a[i]== 0) {
				break;
			}else {
				max = a[i + 1] > a[i] ? a[i + 1] : a[i];
			}
		}
		for (int i = 0; i < a.length; i++) {
				if (a[i] == max) {
					count++;
				}	
		}
		System.out.println("最大值是" + max);
		System.out.println("最大值出现的次数是" + count);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值