2011-08-06 27 views
1

为什么我会收到第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") ; 
    } 
} 
+0

这是92行? –

+1

您应该仔细阅读并学习使用数组作为极大地简化和缩减代码的方法。 –

+0

'家庭作业'标签添加给开关是“必需的” –

回答

8

因为你break权利之前它。

6

因为上线88 break;声明:

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)永远不会执行,因此它会提醒您“无法访问代码”。

+0

谢谢。最后一个问题,如果我输入416这样的东西,它完全忽略了11-19,直接去了二十几岁。我能做些什么来解决这个问题?所以它会通过11-19并忽略20,30,40等。 – Gen

1

中断后,您已经在开关块中获得代码,但没有先前的情况,并且这是无法访问的代码。

但严重的是,这段代码是borked,应该报废。我建议你重新编写这个代码,并使用数组来简化,在写代码之前计划你要写的内容,并且一次只增量地添加一小段代码,在添加代码的每一位后编译并修复所有代码在添加任何新代码之前编译错误。

+0

对不起,它需要使用switch语句。但感谢您的答案。 :) – Gen

+1

您仍然想要更改编码方式,因为上面的代码显示您没有足够频繁地编译并在添加代码之前修复编译错误。你永远不要将新代码添加到不编译的代码库中。 –

0

这是你的小修改过的代码,也进行了测试。

import java.util。*;

公共类词{

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

}

+0

它仍然完全忽略了开关(o)为11 12 13 14 15 16 17 18 19.尝试输入一个数字与其中的青少年。很抱歉打扰。我很欣赏这一点。 :) – Gen

+0

现在通过上面的更新代码更新它会为你工作,我只是测试它。 – subodh

相关问题