Java中用于异常处理的标签

时间:2016-09-29 16:16:42

标签: java loops

我正在进行Java Associate级认证,虽然我们明确告知我们不会在标签上进行测试,但我们已经展示了它们。看到这里虽然建议似乎永远不会使用标签?

我想在catch块/用户输入控制台中使用它们作为验证输入的方法。

do {//Keep calculator going as long as user wants               
            numInputCheck: 
            do {
                try {//Force user to input a whole number
                    System.out.print("\nPlease enter the Mark you want to Calculate\n(Enter marks between " + GradeCalculator.getMIN_MARK() + " and " + GradeCalculator.getMAX_MARK() + " only): ");
                    mark = Integer.parseInt(scn.nextLine());
                }catch(NumberFormatException nfe) {
                    System.out.println("\nInvalid entry - Please ensure entry is a number only.");
                    continue numInputCheck;
                }   
                gradeCalc.isValidMark(mark);//Ensure input is within valid range
            }while(!gradeCalc.getIsValidMark());
            *etc*......

这是错误的编码吗?

编辑:上面的代码并没有按照我的想法做到/希望它做什么 - 它实际上并没有跳回到标签上。

我最终将代码更改为

do {//Keep calculator going as long as user wants
            do {//Force user to enter number within valid range
                do {//Force user to enter a whole number
                    try {
                        System.out.print("\nPlease enter the Mark you want to Calculate\n(Enter marks between " + GradeCalculator.getMIN_MARK() + " and " + GradeCalculator.getMAX_MARK() + " only): ");
                        mark = Integer.parseInt(scn.nextLine());
                        isValidInput = true;
                    }catch(NumberFormatException nfe) {
                        System.out.println("\nInvalid entry - Please ensure entry is a number only.");
                        isValidInput = false;
                    }
                }while(!isValidInput);
            }while(!gradeCalc.isValidMark(mark));

相当确定正常工作。

无论如何,我想我回答了自己的问题 - 不鼓励标签,因为像我这样的人试图使用它们。

2 个答案:

答案 0 :(得分:0)

不,这不是实际的例子,因为如果没有标签的帮助,继续可以自己完成所有工作。  一个很好的例子是当你有2个嵌套循环并且想要从内循环中的条件中断外循环时

    outerloop:while(condition1) {

                 while(condition2) {
                       if(condition3)
                           break outerloop;
                 }
          {

答案 1 :(得分:0)

继续语句跳过上面的所有句子,你必须使用break句来停止循环。标签对于多个循环非常有用,例如:

 set( [Rule(chain='OUTPUT', num='3', pkts='0', bytes='0', target='ACCEPT', prot='tcp', opt='--', inp='*', out='*', source='0.0.0.0/0', destination='10.10.7.84', extra='tcp spt:7390'), 
 Rule(chain='INPUT', num='1', pkts='0', bytes='0', target='ACCEPT', prot='tcp', opt='--', inp='*', out='*', source='148.100.0.0/16', destination='0.0.0.0/0', extra='tcp dpt:7390'), 
 Rule(chain='INPUT', num='3', pkts='0', bytes='0', target='ACCEPT', prot='tcp', opt='--', inp='*', out='*', source='10.10.7.84', destination='0.0.0.0/0', extra='tcp dpt:7390')])