程序功能计算月份所对应的天数public class Calc {
/**
 * 计算是否为润年
 * @param year
 * @return 
 */
public boolean calcYear(int year) {
if (year % 4 == 0 & year % 400 != 0) {
//System.out.println(year + "\t" + "润年");
return true; } else {
//System.out.println(year + "\t" + "平年");
return false;
}
}

/**
  * 计算月份对应的天数, LeapYear为真表示润年
  */ public int calcday(int month,boolean LeapYear){

switch(month){
case 1:
return 31;
break;

case 2:
if(LeapYear){
  return 28;
  }else{
  return 29;
  }
break;
default :
return 0;
        //红色字体为出错处
}
}入口程序
import java.util.*;
public  class example1{
  public static void main(String[] args){
  Calc calc=new Calc();
  System.out.println("请输入年份:");
  Scanner input=new Scanner(System.in);
  int year=input.nextInt();
  System.out.println("请输入月份:");
  int month=input.nextInt();
  boolean leapYear=calc.calcYear(year);
  int day=calc.calcday(month, leapYear);
  if (leapYear){
  System.out.print(year+"\t"+"润年\t"+month+"月份\t"+day+"天");
  }   
  }
}在swith中,加上break 语句,defaul语句,提示:
 Exception in thread "main" java.lang.Error: 无法解析的编译问题:
不可达代码
不可达代码 at Calc.calcday(Calc.java:24)
at example1.main(example1.java:11)这咋弄呀!

解决方案 »

  1.   

    return后执行不到break了,你可以申明个变量来接受你switch里case的值,最后返回出去
      

  2.   


    return 31;
    break;
    return了结束了该方法 你还break什么
      

  3.   

    default 必须加么? defaul不是可加可不加的么?
    不加dafault好像也报错呢?
      

  4.   

    dafault可不加。
    问题在这calc.calcYear(year);返回的是整型,你不能用boolean 型接受
    boolean leapYear=calc.calcYear(year);
      

  5.   

    return 本身就有break;的作用,在编译的时候,编译器就知道break;是永远达不到的,所以会抛出
    "unreachable code" errorint test() {
    System.out.print("1");
    return 0;
    System.out.print("2");你编译下就知道是和你一样的错误,因为编译器知道System.out.print("2");永远不可能被执行