Почему я получаю сообщение об ошибке недостижимого? - PullRequest
1 голос
/ 06 августа 2011

Почему я получаю сообщение об ошибке, что строка 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") ;  
    }
}

Ответы [ 4 ]

8 голосов
/ 06 августа 2011

Потому что вы break прямо перед ним.

6 голосов
/ 06 августа 2011

Из-за оператора break; в строке 88:

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



                **switch (o)** 
                {
                    case 11:
                    System.out.print ("Eleven ") ;

Вы говорите программе «пропустите все, что находится ниже этого выражения внутри этого оператора switch, пока вы не выйдете из оператора switch», и break является безусловным, то есть всегда происходит, когда внутри case 10. Компилятор достаточно умен, чтобы признать, что это означает, что switch(o) никогда не может быть выполнен, и поэтому он предупреждает вас, что «код не может быть достигнут».

1 голос
/ 06 августа 2011

У вас есть код в блоке коммутатора после перерыва, но без предшествующего случая, и это недостижимый код.

А если серьезно, этот код не работает и его нужно удалить.Я рекомендую вам переписать это и использовать массивы, чтобы упростить, спланировать то, что вы собираетесь писать, прежде чем писать, и только постепенно добавлять небольшие кусочки кода за раз, компилировать после добавления каждого бита кода и исправлять все и всяошибки компиляции перед добавлением любого нового кода.

0 голосов
/ 06 августа 2011

Вот ваш маленький измененный код и также проверен.

import java.util. *;

публичный класс 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=0;
    int o=0;
    if(num>10 && num<20)
    {
        t=num;
    }else{
        t = (num - tho - h -  (num % 10)) ;

         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 ;

                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") ;  
}

}

...