/*
循环结构
一在某些条件满足的情况下,反复执行特定代码的功能
1语句分类: for循环 while循环 do-while循环
2循环语句组成部分:
1,初始化部分
2,循环条件部分(通常情况下,循环结束都是因为出现false)
3,循环体部分
4,迭代部分
二for循环结构
for(初始化条件;循环条件(必须是Boolean类型);迭代条件){
循环体
}
执行过程1-2(true)-3-4-2(true)-3-4-’’’’’-2(false)-循环结束
三,for循环中break的使用,大括号中插入break可以在循环条件为true的
情况下终止循环。一般与if-else配合。
*/
import java.util.Scanner;
class ForTest{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入要重复的语句");
String word = scan.next();
System.out.println("请输入要重复的次数");
int num = scan.nextInt();
for (int i = 1; i <= num; i++ ){ // i值从1不断增加,直到大于num,一共执行numc次
System.out.println(word);
System.out.println("第" + i + "次"); //变量i只在for循环内有效,出了循环失效
}
/*
第二种写法,i从0开始
for (int i = 0; i < num; i++ ){ // i值从0不断增加,直到等于num,一共执行numc次
System.out.println(word + "你好");
}
*/
int num1 = 1;
for (System.out.println("a"); num1 <=3; System.out.println("c"),num1++){//for后面()内只能有两个;表达式内部如果有两句或以上用,分隔开 例如System.out.println("c"),num++
System.out.println("b");
}//输出abcbcbc,
//例题1 ,遍历n以内的偶数,输出结果的总和,输出偶数的个数
System.out.println("请输入n值");
int n = scan.nextInt();
int sum = 0;
int num2 = 0;//必须在for外部先赋值,如果for条件不满足进不去可能会因为变量没有初始化而报错
for (int i = 0; i <= n; i++){
if (i % 2 ==0){
System.out.println(i);
sum += i;//使用+= 进行累加
num2++;//每得到一个偶数数值加1
}
}
System.out.println("n以内偶数的总和为" + sum); //需要放到循环体外
System.out.println("n以内偶数个数为" + num2);
//例题2,遍历1-m,每一行打印一个值,并在3的倍数后打印 “3的倍数”在5的倍数后打印 “5的倍数”在7的倍数后打印 “7的倍数”
/*
//第一种写法
System.out.println("请输入m值");
int m = scan.nextInt();
for (int i = 1; i <= m; i++){
if (i % 3 == 0 && i % 5 == 0 && i % 7 == 0){
System.out.println(i + " 3的倍数" + " 5的倍数" + " 7的倍数");
}else if(i % 3 == 0 && i % 5 == 0){
System.out.println(i + " 3的倍数" + " 5的倍数");
}else if(i % 5 == 0 && i % 7 == 0){
System.out.println(i + " 5的倍数" + " 7的倍数");
}else if(i % 3 == 0 && i % 7 == 0){
System.out.println(i + " 3的倍数" + " 7的倍数");
}else if(i % 3 == 0){
System.out.println(i + " 3的倍数");
}else if(i % 5 == 0){
System.out.println(i + " 5的倍数");
}else if(i % 7 == 0){
System.out.println(i + " 7的倍数");
}else{
System.out.println(i);
}
}
*/
//第二种写法
System.out.println("请输入m值");
int m = scan.nextInt();
for (int i = 1; i <= m; i++){
System.out.print(i + " ");//不换行继续输出
if (i % 3 == 0 && i % 5 == 0 && i % 7 == 0){
System.out.print("3的倍数 " + "5的倍数 " + "7的倍数 ");
}else if(i % 3 == 0 && i % 5 == 0){
System.out.print("3的倍数 " + "5的倍数 ");
}else if(i % 5 == 0 && i % 7 == 0){
System.out.print("5的倍数 " + "7的倍数 ");
}else if(i % 3 == 0 && i % 7 == 0){
System.out.print("3的倍数 " + "7的倍数 ");
}else if(i % 3 == 0){
System.out.print("3的倍数 ");
}else if(i % 5 == 0){
System.out.print("5的倍数 ");
}else if(i % 7 == 0){
System.out.print("7的倍数 ");
}
System.out.println();
}
//输出 1-z的整数,其中3,5,7的倍数不打印
System.out.println("请输入Z值");
int z = scan.nextInt();
for (int i = 1; i <= z; i++){
if (i % 3 == 0 || i % 5 == 0 || i % 7 == 0){
System.out.println();
}else{
System.out.println(i);
}
}
//例题四,输出100-1000中的水仙花数,既 数字本身是各个位上数字的立方之和,例如153=1^3+5^3+3^3
for (int i = 100;i <1000;i++ ){
int iBai = i / 100;
int iShi = i % 100 / 10;
int iGe = i % 10;
if (i == iBai * iBai * iBai + iShi * iShi * iShi + iGe * iGe * iGe ){
System.out.println("找到一个水仙花数" + i);
}
}
//例题五,打印九九乘法表 for语句可以嵌套执行
for (int i = 1;i <= 9;i++ ){
for (int j = 1;j <= 9;j++){
System.out.print(i +"*" + j + "=" + i * j + "\t");
}
System.out.println();
}
//例题六输入x,y,求出x与y的最小公倍数与最大公约数
System.out.println("请输入X值");
int x = scan.nextInt();
System.out.println("请输入Y值");
int y = scan.nextInt();
int max =(x >= y)? x : y;
for (int i = max; i <= x * y; i++){
if (i % x == 0 && i % y == 0){
System.out.println("X与Y的最小公倍数是" + i);//必须在break前输出,否则结果不对
break;
}
}
int min = (x <= y)? x : y; //使用三元运算符判断xy中的最小值
for (int i = min; i > 0; i--){//可以直接写int i = x,不能保证x大小,效率不保证
if (x % i == 0 && y % i == 0){
System.out.println("X与Y的最大公约数是" + i);
break;//找到第一个符合条件的公约数后跳出循环
}
}
}
}
/*
循环语句二 while循环
循环语句组成部分:
1,初始化部分
2,循环条件部分(通常情况下,循环结束都是因为出现false)
3,循环体部分
4,迭代部分
while循环结构
1
while(2){
3;
4; 如果没有4编译不报错,但会陷入死循环,无限执行,需要保证算法的有限性。
}
cmd命令窗口中陷入死循环按ctrl + c 中止执行
while循环执行过程 1-2(true)-3-4-2(true)-3-4-’’’’’-2(false)-循环结束
for与while的关系,可以互相转换。
for与while 的不同点,while的初始化条件1在循环外部,可以被其他语句调用。
for的初始化条件出了循环结构就不能被调用。
无限循环可以用while(true)或者for(;;)来实现,利用条件判断语句输出break来结束循环
*/
import java.util.*;
class WhileTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int i = 0 ;
while (i <= 20){
System.out.println("Hello World!");
i++;//可以写成i += 1
}
System.out.println("i值为" + i);//输出21
//循环综合练习
//例题1,从键盘输入不定个数的整数,判断输入数据中整数与负数的个数,当输入0时程序结束
//无限循环可以用while(true)或者for(;;)来实现,利用条件判断语句输出break来结束循环
int positiveNum = 0;
int negativeNum = 0;
while (true){
System.out.println("请输入一个整数");
int num = scan.nextInt();
if (num == 0) {
break;
}else if (num < 0){
negativeNum++;
}else if (num > 0){
positiveNum++;
}
//此处没有迭代体,可以编译通过
}
System.out.println("正数数量为" + positiveNum);
System.out.println("负数数量为" + negativeNum);
//使用for来实现
int positiveNum1 = 0;
int negativeNum1 = 0;
for (positiveNum1 = 0 ,negativeNum1 = 0;true;) {//迭代条件不写,可以编译通过
System.out.println("请输入一个整数");
int num = scan.nextInt();
if (num == 0) {
break;
}else if (num < 0){
negativeNum1++;
}else if (num > 0){
positiveNum1++;
}
}
System.out.println("正数数量为" + positiveNum1);
System.out.println("负数数量为" + negativeNum1);
for (;;) {//等同于while(true)
System.out.println("请输入一个整数");
int num = scan.nextInt();
if (num == 0) {
break;
}else if (num < 0){
negativeNum1++;
}else if (num > 0){
positiveNum1++;
}
}
System.out.println("正数数量为" + positiveNum1);
System.out.println("负数数量为" + negativeNum1);
}
}
/*
循环语句三 do while循环
循环语句组成部分:
1,初始化部分
2,循环条件部分(通常情况下,循环结束都是因为出现false)
3,循环体部分
4,迭代部分
do while循环结构
1
do{
3;
4;
}while(2);
cmd命令窗口中陷入死循环按ctrl + c 中止执行
do while循环执行过程 1-3-4-2(true)-3-4–2(true)’’’’’-3 -4 -2(false)-循环结束
do-while特点:至少会执行一次循环体的语句
开发中do-while 较少使用
*/
import java.util.*;
class DoWhileTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//遍历100以内的奇数,并输出奇数个数与总和
int num = 1;
int count = 0;
int sum = 0;
do{
if (num % 2 ==1){
System.out.println(num);
sum += num;
count++;
}
num++;
}
while (num <= 100);
System.out.println("奇数个数为" + sum);
System.out.println("总和为" + count);
}
}
来源:CSDN
作者:wisdomcodeinside
链接:https://blog.csdn.net/wisdomcodeinside/article/details/103771957