为什么我得到错误无法访问的声明?

1 java switch-statement

为什么我得到第92行是无法访问的语句的错误?基本上我要做的是跳过一些代码,如21-22-23 ...如果用户输入类似11-12-13的东西......

import java.util.*;

public class Words {

    public static void main(String[] args) {


        Scanner s = new Scanner(System.in);

        System.out. print ("\n\tINTEGER TO WORDS") ;
        System.out.print ("\n\nEnter a number between 1 and 9999: ") ;
        int num = s.nextInt();
        System.out. print ("\nThe answer is: ") ;

        int tho = (num - (num % 1000)) ;            
        int h = (num - tho - (num % 100)) ;
        int t = (num - tho - h -  (num % 10)) ;
        int o = (num - tho - h - t) ;


        switch (tho)
        {
            case 9000:
                System.out.print ("Nine Thousand ") ;
                break ;
            case 8000:
                System.out.print ("Eight Thousand ") ;
                break ;
            case 7000:
                System.out.print ("Seven Thousand ") ;
                break ;
            case 6000:
                System.out.print ("Six Thousand ") ;
                break ;
            case 5000:
                System.out.print ("Five Thousand ") ;
                break ;
            case 4000:
                System.out.print ("Four Thousand ") ;
                break ;
            case 3000:
                System.out.print ("Three Thousand ") ;
                break ;
            case 2000: 
                System.out.print ("Two Thousand ") ;
                break ;
            case 1000: 
                System.out.print ("One Thousand ") ;
                break ;
        }       


        switch (h)
        {
            case 100:
                System.out.print ("One Hundred ") ;
                break ;
            case 200:
                System.out.print ("Two Hundred ") ;
                break ;
            case 300:
                System.out.print ("Three Hundred ") ;
                break ;
            case 400:
                System.out.print ("Four Hundred ") ;
                break ; 
            case 500:
                System.out.print ("Five Hundred ") ;
                break ;
            case 600:
                System.out.print ("Six Hundred ") ;
                break ;
            case 700:
                System.out.print ("Seven Hundred ") ;
                break ;
            case 800:
                System.out.print ("Eight Hundred ") ;
                break ;
            case 900:
                System.out.print ("Nine Hundred ") ;
                break ;
        }

        switch (t)
        {
            case 10:
                System.out.print ("Ten ") ;
                break ;



                **switch (o)** 
                {
                    case 11:
                    System.out.print ("Eleven ") ;
                    break ;
                    case 12:
                    System.out.print ("Twelve ") ;
                    break ;
                    case 13:
                    System.out.print ("Thirteen ") ;
                    break ;
                    case 14:
                    System.out.print ("Fourteen ") ;
                    break ;
                    case 15:
                    System.out.print ("Fifteen ") ;
                    break ;
                    case 16:
                    System.out.print ("Sixteen ") ;
                    break ;
                    case 17:
                    System.out.print ("Seventeen ") ;
                    break ;
                    case 18:
                    System.out.print ("Eighteen ") ;
                    break ;
                    case 19:
                    System.out.print ("Nineteen ") ;
                    break ; 
                }

            case 20:
                System.out.print ("Twenty ") ;
                break ;
            case 30:
                System.out.print ("Thirty") ;
                break ;
            case 40:
                System.out.print ("Fourty ") ;
                break ;
            case 50 :
                System.out.print ("Fifty ") ;
                break ;
            case 60:
                System.out.print ("Sixty ") ;
                break ;
            case 70:
                System.out.print ("Seventy ") ;
                break ;
            case 80:
                System.out.print ("Eighty ") ;
                break ;
            case 90:
                System.out.print ("Ninenty ") ;
                break ;
        }       

        switch (o)
        {
            case 1:
                System.out.print ("One ") ;
                break ;
            case 2:
                System.out.print ("Two ") ;
                break ;
            case 3:
                System.out.print ("Three ") ;
                break ;
            case 4:
                System.out.print ("Four ") ;
                break ;
            case 5:
                System.out.print ("Five ");
                break ;
            case 6:
                System.out.print ("Six ");
                break ;
            case 7:
                System.out.print ("Seven ");
                break ;
            case 8:
                System.out.print ("Eight ");
                break ;
            case 9:
                System.out.print ("Nine ");
                break ;
        }
    System.out. print ("\n") ;  
    }
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*emy 8

因为你break就在它之前.


Mar*_*iot 6

由于break;第88行的声明:

case 10:
                System.out.print ("Ten ") ;
                break ; // <-- problem is here



                **switch (o)** 
                {
                    case 11:
                    System.out.print ("Eleven ") ;
Run Code Online (Sandbox Code Playgroud)

你告诉程序"跳过这个表达式下面的所有内容,直到你不在switch语句中",这break是无条件的,这意味着它总是在里面发生case 10.编译器足够聪明,可以识别出这意味着switch(o)永远不会执行,因此它会提醒您"无法访问代码".