4-2-2 多重循环-break跳出

让程序输出100以内素数


import java.util.Scanner;

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

}


错:

1、放在for循环之外,导致输出2 3

    		int isPrime = 1;


注:

1、for里面还有for,叫做多重循环/嵌套循环


多重循环/嵌套循环

例1

        for ( int n1 = 0; n1<10 ; ++n1 )
        {
        	for (int n2 = 0; n2 <50; ++n2)
        	{
        		System.out.println(n1+":"+n2);
        	}        
    	}

例2(99乘法表)

        for ( int i = 1; i <= 9 ; i++ )
        {
        	for (int j = 1; j <= 9; j++)
        	{
        		System.out.println("\t"+(i*j));
        	}        
        	System.out.println();
    	}

里面的循环做更多次



输出前50素数的程序



1.不知道循环次数,for不合适

2.需要有一个数数器


留作作业


凑硬币(枚举,穷举)

import java.util.Scanner;

public class Main {    
    
    public static void main(String[] args) {                  
        Scanner in = new Scanner(System.in);
        int amount = in.nextInt();
        for (int one = 0; one <= amount; ++one )
        {
        	for (int five = 0; five <= amount/5; ++five )
            {
            	for (int ten = 0; ten <= amount/10; ++ten )
            	{
            		for (int twenty = 0; twenty <= amount/20; ++twenty )
            		{
            			if ( one + five*5+ten*10+twenty*20 == amount)
            			{
            				System.out.println(one+"张1圆,"+five+"张5圆,"+ten+"张5圆,"+twenty+"张20圆");
            			}
            		}
            	}
            }
        }           	    	
    }     

}


如果只要一种

用break?麻烦,只能跳出一层循环

import java.util.Scanner;

public class Main {    
    
    public static void main(String[] args) {                  
        Scanner in = new Scanner(System.in);
        int amount = in.nextInt();
        
        int isExit = 0;
        
        for (int one = 0; one <= amount; ++one )
        {
        	for (int five = 0; five <= amount/5; ++five )
            {
            	for (int ten = 0; ten <= amount/10; ++ten )
            	{
            		for (int twenty = 0; twenty <= amount/20; ++twenty )
            		{
            			if ( one + five*5+ten*10+twenty*20 == amount)
            			{
            				System.out.println(one+"张1圆,"+five+"张5圆,"+ten+"张5圆,"+twenty+"张20圆");
            				isExit = 1;
            				break;
            			}
            		}
            		if (isExit == 1)
            		{
            			break;
            		}
            	}
            	if (isExit == 1)
        		{
        			break;
        		}
            }
        	if (isExit == 1)
    		{
    			break;
    		}
        }

    }     

}

或者,加个标号

import java.util.Scanner;

public class Main {    
    
    public static void main(String[] args) {                  
        Scanner in = new Scanner(System.in);
        int amount = in.nextInt();
        
        int isExit = 0;
//        标号,命名下面那个for
        OUT:
        for (int one = 0; one <= amount; ++one )
        {
        	for (int five = 0; five <= amount/5; ++five )
            {
            	for (int ten = 0; ten <= amount/10; ++ten )
            	{
            		for (int twenty = 0; twenty <= amount/20; ++twenty )
            		{
            			if ( one + five*5+ten*10+twenty*20 == amount)
            			{
            				System.out.println(one+"张1圆,"+five+"张5圆,"+ten+"张5圆,"+twenty+"张20圆");
            				break OUT;
            			}
            		}
            	}
            }
        }           	    	
    }     

}

1、break、continue都有用

2、起名任意







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值