Java教程

Java 之循环

本文主要是介绍Java 之循环,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Java 之循环

一、while循环

1.基本语法

基本上与C语言和C++的语法相同,先判断后执行。

while(循环条件)		// 循环条件只能为boolean类型,这里与C语言和C++中不同
{
	循环操作语句;
}

2.while循环案例

1.2.1 使用循环计算1-100的累加和

package com.company;

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        int sum=0;
        int i=1;
        
        while(i<=100){
            sum+=i;
            i++;
        }
        
        System.out.printf("%d\n",sum);
    }
}


// 结果:5050

1.2.2 计算输入整型数字中每位数字之和

package com.company;

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();

        int sum=0;	// 存放各位之和
        while (num>0)	// num!=0
        {
            sum+=num%10;
            num/=10;
        }

        System.out.printf("%d\n",sum);
    }
}

// 输入:123
// 输出:6

注意:在Java中的while循环的循环条件只能是boolean类型。

// 比如例子中的
while (num>0){
	sum+=num%10;
    num/=10;
}

// 在C语言和C++中可以写为
while (num){
	sum+=num%10;
    num/=10;
}

1.2.3 使用循环实现三次密码输入错误退出系统

package com.company;

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        final String PASSWORD = "123456";	// 常量
        
        Scanner input = new Scanner(System.in);

        String password;    // 初始化为 String password = null;

        int i = 0;
        while(i<3)
        {
            System.out.print("请输入密码:");
            password = input.nextLine();
            i++;

            // Java中不允许这样判断:if(password == "123456")
            if(!PASSWORD.equals(password))  // 判断两个字符串是否相等,判断字符串的固定方式 PASSWORD.equals(password),为了防止password为空,所以协助括号里面
            {
                System.out.println("输入密码错误,请重新输入!(剩余" + (3-i) + "次)");
                if(i == 3)
                {
                    System.out.println("密码输入超过三次,强制退出系统");
                    System.exit(0);
                }
            }
            else
            {
                i = Integer.MAX_VALUE;  // 将i赋值为整型中的最大值
            }
        }
        System.out.println("输入密码正确,成功登录系统!");
    }
}

1.2.4 某购物网站双十一2015年的成交额为800亿,每年递增20%。问:按此速度哪年交易额达到2000亿?

package com.company;

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        int year = 2015;
        double money = 800;
        while(money<2000)
        {
            money*=1.2;
            year++;
        }

        System.out.printf("%d年达到2000亿(%.2f亿)\n",year,money);
    }
}

// 输出:2021年达到2000亿(2388.79亿)

二、do-while循环

1.基本语法

基本上与C语言和C++的语法相同,先执行后判断。

do{
	循环操作;
}while(循环条件);	循环条件只能为boolean类型,这里与C语言和C++中不同

2.do-while循环案例

2.2.1
书写Java程序实现简单计算器功能,加、减、乘、除、取模。

package com.company;

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

        String choice;
        do{
            double num1,num2;  // 两个参与运算的数字
            double result = 0; // 运算结果
            String op;         // 运算符

            System.out.print("请输入两个操作数:");
            num1 = input.nextDouble();
            num2 = input.nextDouble();
            System.out.print("请输入运算符:");
            op = input.next();

            boolean flag1 = true;    // 当做除法运算时,判断num2是否为0
            boolean flag2 =true;     // 判断输入的op是否为加、减、乘、除、取模中的一种

            if("+".equals(op)) result = num1 + num2;
            else if("-".equals(op)) result = num1 - num2;
            else if("*".equals(op)) result = num1 * num2;
            else if("/".equals(op))
            {
                if(num2!=0) result = num1 / num2;
                else flag1 = false;
            }
            else if("%".equals(op)) result = num1 % num2;   // 在Java中浮点数是可以进行取模运算的
            else flag2 = false;

            if(!flag1) System.out.println("输入的操作数不合法,除数不能为0!");
            else if(!flag2) System.out.println("输入的运算符不合法,计算器只能进行加、减、乘、除、取模运算");
            else System.out.printf("%.2f %s %.2f = %.2f\n",num1,op,num2,result);

            System.out.println("是否继续计算?(y/n)");
            choice = input.next();
        }while ("y".equals(choice));
    }
}

注意:在Java中两个浮点数也可以进行取模运算,但是在C语言和C++中只有整型变量可以进行取模运算。


三、for循环

1.基本语法

基本上与C语言和C++的语法相同。

for(表达式1;表达式2;表达式3)
{
	语句;
}

死循环:

for(;;)
{
	语句;
}

2.for循环案例

3.2.1
输入n个数字,求这n个数字的平均值

package com.company;

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

        // 输入n个数字,求这n个数字的平均值
        int n = input.nextInt();
        int sum = 0;	// n的数的和
        for (int i = 0; i < n; i++) {
            int num = input.nextInt();
            sum += num;
        }
        int avg = sum/n;	// 平均值(double类型也可以)
        System.out.println(avg);
    }
}

3.2.2
打印月历
已知:1997年7月1日是星期二,使用循环打印1997年7月月历。

package com.company;

public class Main{
    public static void main(String[] args){
        System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日");
        System.out.print("\t\t");

        int dayOfMonth = 31;					// 两个\t
        for(int i=1;i<=dayOfMonth;i++)
        {
            int day = (i+1)%7;
            if(day==0) System.out.println(i);
            else System.out.print(i + "\t\t");	// 两个\t
        }
    }
}

运行结果:
在这里插入图片描述

这篇关于Java 之循环的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!