4.1 for循环

For(初始化;条件;但不动作;)
{}
1,第一个是初始化,可以定义一个变量并赋值。
2,循环维持条件,与while一样进入循环先检测是否满足。
3,步进,每轮循环必须执行的表达式。

while和for总是可以替换的

1,如果有明确的次数用for
2,必须执行一次用 do while
3,其他情况用while

tips:Int 取值范围 -2^31…… 2^31-1

几种循环的使用情况
如果有固定的次数,使用for
必须执行一次用do while
其他情况用while

4.2 循环控制

  • 素数
import java.util.Scanner;

public class Sushu {

    private static Scanner in;

    public static void main(String[] args) {
        in = new Scanner(System.in);
        int n = in.nextInt();
        int isprme = 1;
        for(int i =2;i<n;i++ )
        {
            if(n%i==0)
            {
                isprme = 0;
                break;
            }           
        }
        if(isprme==1)
        {
            System.out.println(n+"是素数");
        }
        else
        {
            System.out.println(n+"不是素数");
        }
    }

}

tips:
1,break可以用于3种循环,break的位置很重要,要注意。
2,Continue 可以跳过这轮循环,继续下一轮。
3,break和continue只能跳出它所在的那层循环
4,循环的前面可以有一行放一个 标号:
然后,break或continue 标号 可以作于与标号的那层循环

4.3 多重循环

  • 数硬币
import java.util.Scanner;

public class YB {

    private static int n;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        out:
        for(int one = 0; one<n; one++)
        {
            for(int five = 0;five<n;five++)
            {
                for(int ten = 0;ten<n;ten++)
                {
                    if(one+five*5+ten*10==n)
                    {
                        System.out.println(one+"张一元"+five+"张五元"+ten+"张十元");
                        break out;
                    }

                }
            }

            {

            }
        }
    }

}

tips:如果要让break跳出更上层的循环,最好在要跳出的循环加上标号
名字 :

4.4 逻辑类型

  • .布尔类型 boolean

1,关系运算的结果只能是逻辑值,true或false。
这个值可以保存在一个对应的逻辑类型的变量中,这样的变量类型是boolean
2,布尔(boolean)是为了纪念Geprge boole对逻辑运算的贡献。


1 !A 如果ture就是false 否则想反


2 && a&&b 如果 ab都是 ture结果为ture,否则false


3,|| a||b ,如果ab有一个为ture,结果为ture,否则为false

4.5 循环计算

  • 求和 f(n)=1+1/2+1/3+……+1/n;
import java.util.Scanner;

public class Fn {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int n =in.nextInt();
        double sum =0.0;
        for(int i=1;i<=n;i++)
        {
            sum = sum +1.0/i;//用一个浮点数和整数做运算,会自动换算成浮点数
        }
        System.out.printf("%.2f",sum);      //printf("%.2f",)输出小数点后2位
    }

}

tips:
1,printf(“%.2f”,)输出小数点后2位
2,用一个浮点数和整数做运算,会自动换算成浮点数

  • 最大公约数
import java.util.Scanner;

public class gcd {

    private static Scanner in;

    public static void main(String[] args) {
        in = new Scanner(System.in);
        int a= in.nextInt();
        int b= in.nextInt();
        while(b!=0)
        {
            int r = a%b;
            a = b;
            b = r;
        }
        System.out.println(a);
    }

}

作业

  • 素数和

题目内容:

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

现在,给定两个整数n和m,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

输入格式:

两个整数,第一个表示n,第二个表示m。

输出格式:

一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

输入样例:

2 4

输出样例:

5

import java.util.Scanner;

public class Prime {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in = new Scanner(System.in);
        int n,m;
        n = in.nextInt();
        m = in.nextInt();
        int sum =0;
        int[] numbers = new int[m+1];
        for(int i =2;i<=m;i++)
        {
            for(int j = 2;i*j<=m;j++)
            {
                numbers[i*j] = 1;
            }
        }
        for(;n<=m;n++)
        {
            if(numbers[n]==0)
            {
                sum = sum +n;
            }
        }
        System.out.println(sum);
    }

}
  • 念整数

题目内容:

你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。

如输入1234,则输出:

yi er san si

注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:

fu er san si yi

输入格式:

一个整数,范围是[-100000,100000]。

输出格式:

表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

输入样例:

-30

输出样例:

fu san ling

import java.util.Scanner;

public class Shusu {

    private static Scanner in;

    public static void main(String[] args) {
        in = new Scanner(System.in);
        int number = in.nextInt();
        int sum = 0;
        if(number<0)
        {
            System.out.print("负");
            number = -number;
        }
        for(int a;number>0;)
        {
            a = number%10;
            number = number/10;
            sum = sum*10+a;     
        }
//      System.out.println(sum);
        for(int b;sum>0;)
        {
            b= sum%10;          
            switch(b)
            {
            case 0 :System.out.print("零");
            break;
            case 1 :System.out.print("壹");
            break;
            case 2 :System.out.print("贰");
            break;
            case 3 :System.out.print("叁");
            break;
            case 4 :System.out.print("肆");
            break;
            case 5 :System.out.print("伍");
            break;
            case 6 :System.out.print("陆");
            break;
            case 7 :System.out.print("柒");
            break;
            case 8 :System.out.print("捌");
            break;
            case 9 :System.out.print("玖");
            break;
            }
            sum = sum/10;
        }
}

}