Java 提高(1)----- java中的goto语句

java中的goto语句


Java中的goto语句

在java中可以使用标签和continue,break组合形成goto的效果

public class LabelDemo {
    public static void main(String[] args) throws InterruptedException {
        //标签
        exit:
        while (true){
            for(int i= 0 ; i < 10 ; i++){
                if(i == 5)
//                    break ;   //直接退出内层for循环继续下一次for循环
//                    continue ; //开始内层for循环的下一次
//                    break exit; //直接退出exit标签所执行标签的循环
//                    continue exit; //调到exit,从新执行while
                System.out.print(i+" ");
                Thread.sleep(10);
            }
            System.out.println();
        }
    }
}

#使用break的结果
0 1 2 3 4 
0 1 2 3 4 
0 1 2 3 4 
0 1 2 3 4 
0 1 2 3 4 
0 1 2 3 4 
...  //代表死循环打印

#使用continue的结果
0 1 2 3 4 6 7 8 9 
0 1 2 3 4 6 7 8 9 
0 1 2 3 4 6 7 8 9 
0 1 2 3 4 6 7 8 9 
0 1 2 3 4 6 7 8 9 
0 1 2 3 4 6 7 8 9 
... //代表死循环打印

#使用break exit结果
0 1 2 3 4 //程序执行完毕,退出了2个循环

#使用continue exit结果
0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 ......  //代表死循环打印

总结

  • 一般的continue会退回到内存循环的开头,并继续执行

  • 一般的break会中断并跳出当前循环

  • 代标签的continue会到达标签的位置,从新开始

  • 带标签的break会中断并跳出当前标签所指的循环


程序联系

打印出4位数字的吸血鬼数字

public class VampireNumber {
    public static void main(String[] args) {
        printVampireNumber(4);
    }

    private static void printVampireNumber(int digit) {
        int from = 1;
        for(int i = 1 ; i < digit ;i++){
            from *= 10;
        }
        int to = from*10 -1;

        for(int i = from ; i<= to ;i++){
            //排除后两位是两个0的情况,比如1000,1100,1200,1300...
            if( i % 100 == 0 ){
                continue;
            }
            isVampireNumber(i);
        }
    }

    private static void isVampireNumber(int num) {
        char[] arr = String.valueOf(num).toCharArray();
        deal(arr[0]-'0',arr[1]-'0',arr[2]-'0',arr[3]-'0', num);
        deal(arr[0]-'0',arr[2]-'0',arr[1]-'0',arr[3]-'0' ,num);
        deal(arr[0]-'0',arr[3]-'0',arr[1]-'0',arr[2]-'0' ,num);
    }

    private static void deal(int a1, int a2, int b1, int b2 ,int num) {
        if( ((a1*10+a2) *(b1*10+b2)) == num){
            print(num ,a1*10+a2, b1*10+b2);
        }
        if( ((a1+a2*10) *(b1*10+b2)) == num){
            print(num ,a1+a2*10, b1*10+b2);
        }
        if( ((a1*10+a2) *(b1+b2*10)) == num){
            print(num ,a1*10+a2, b1+b2*10);
        }
        if( ((a1+a2*10) *(b1+b2*10)) == num){
            print(num ,a1+a2*10, b1+b2*10);
        }
    }

    private static void print(int num , int a,int b){
        System.out.println( " "+ num+" ="+a+" * "+b);
    }
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值