2016-02-13 146 views
1

我正在编写此代码以通过使用if else语句从主函数调用它来显示工作日,但是我无法显示星期一以后的日子。似乎其余的if else语句没有被调用。请帮助..使用ifelse显示工作日

import java.util.GregorianCalendar; 

public class WeekdayName 
{ 
    public static String weekday_name(int weekday) 
    { 
     String result = ""; 

     if (weekday == 1) 
     { 
      result = "Sunday"; 
     } 
     else if (weekday == 2) 
     { 
      result = "Monday"; 
     } 
     else if (weekday == 3) 
     { 
      result = "Tuesday"; 
     } 
     else if (weekday == 4) 
     { 
      result = "Wednesday"; 
     } 

     else if (weekday == 5) 
     { 
      result = "Thursday"; 
     } 
     else if (weekday == 6) 
     { 
      result = "Friday"; 
     } 

     else if (weekday == 7) 
     { 
      result = "Saturday"; 
     } 
     else if (weekday == 0) 
     { 
      result = "Sunday"; 
     } 
     else 
     { 
      result = "ERROR"; 
     } 
     return result; 
    } 


    public static void main(String[] args) 
    { 
     System.out.println("Weekday 1: " + weekday_name(1)); 
     System.out.println("Weekday 2: " + weekday_name(2)); 
     System.out.println("Weekday 3: " + weekday_name(3)); 
     System.out.println("Weekday 4: " + weekday_name(4)); 
     System.out.println("Weekday 5: " + weekday_name(5)); 
     System.out.println("Weekday 6: " + weekday_name(6)); 
     System.out.println("Weekday 7: " + weekday_name(7)); 
     System.out.println("Weekday 0: " + weekday_name(0)); 
     System.out.println(); 
     System.out.println("Weekday 43: " + weekday_name(43)); 
     System.out.println("Weekday 17: " + weekday_name(17)); 
     System.out.println("Weekday -1: " + weekday_name(-1)); 

     Calender calender = new GregorianCalender(); 
     int dayofWeek = calender.get(Calender.DAY_OF_WEEK); 

     System.out.println("\nToday is a " + weekday_name(dayofWeek) + "!"); 
    } 

} 

请帮家伙...

+2

这是'Calendar',不'Calender'。 – Marvin

+0

小心包括程序输出并解释为什么你认为它不正确? – mustaccio

+1

一旦你编译代码,通过正确拼写Calend ** a ** r,它可以正常工作。见[Ideone](https://ideone.com/eJZc69)。 – Andreas

回答

0

您当前的代码不编译由于两个问题:

  • Calendar,不Calender
  • 您需要导入java.util.Calendar以及

该rea儿子为什么你只看到星期一的输出,可能是你在不知不觉中执行了一个较旧的(正确编译的)源代码版本,这个版本还没有包含其他日期的输出。但这只是猜测。

请注意,DAY_OF_WEEK实际上并没有返回0,因此您也可以考虑返回ERROR

固定码:

import java.util.GregorianCalendar; 
import java.util.Calendar; 

public class WeekdayName { 
    public static String weekday_name(int weekday) { 
     String result = ""; 

     if (weekday == 1) { 
      result = "Sunday"; 
     } else if (weekday == 2) { 
      result = "Monday"; 
     } else if (weekday == 3) { 
      result = "Tuesday"; 
     } else if (weekday == 4) { 
      result = "Wednesday"; 
     } else if (weekday == 5) { 
      result = "Thursday"; 
     } else if (weekday == 6) { 
      result = "Friday"; 
     } else if (weekday == 7) { 
      result = "Saturday"; 
     } else if (weekday == 0) { 
      result = "Sunday"; 
     } else { 
      result = "ERROR"; 
     } 
     return result; 
    } 

    public static void main(String[] args) { 
     System.out.println("Weekday 1: " + weekday_name(1)); 
     System.out.println("Weekday 2: " + weekday_name(2)); 
     System.out.println("Weekday 3: " + weekday_name(3)); 
     System.out.println("Weekday 4: " + weekday_name(4)); 
     System.out.println("Weekday 5: " + weekday_name(5)); 
     System.out.println("Weekday 6: " + weekday_name(6)); 
     System.out.println("Weekday 7: " + weekday_name(7)); 
     System.out.println("Weekday 0: " + weekday_name(0)); 
     System.out.println(); 
     System.out.println("Weekday 43: " + weekday_name(43)); 
     System.out.println("Weekday 17: " + weekday_name(17)); 
     System.out.println("Weekday -1: " + weekday_name(-1)); 

     Calendar calender = new GregorianCalendar(); 
     int dayofWeek = calender.get(Calendar.DAY_OF_WEEK); 

     System.out.println("\nToday is a " + weekday_name(dayofWeek) + "!"); 
    } 
} 

之后,你的逻辑似乎是做工精细:

Weekday 1: Sunday 
Weekday 2: Monday 
Weekday 3: Tuesday 
Weekday 4: Wednesday 
Weekday 5: Thursday 
Weekday 6: Friday 
Weekday 7: Saturday 
Weekday 0: Sunday 

Weekday 43: ERROR 
Weekday 17: ERROR 
Weekday -1: ERROR 

Today is a Saturday! 
+0

是的,我正在执行一个较老的(正确编译的)源代码,因此即使在更正TYPO并使用导入java.util.Calendar之后,它在星期一之后也不起作用。所以我把它复制到一个新的文件,它的工作。感谢您的杰出答案。 – JUBER

0

你的错误就是拼写GregorianCalender它 应该GregorianCalendarCalender应该 Calendar。您的代码需要import java.util.Calendar;

import java.util.Calendar; 
    import java.util.GregorianCalendar; 

    public class WeekdayNAme 
    { 
     public static String weekday_name(int weekday) 
     { 
      String result = ""; 

      if (weekday == 1) 
      { 
       result = "Sunday"; 
      } 
      else if (weekday == 2) 
      { 
       result = "Monday"; 
      } 
      else if (weekday == 3) 
      { 
       result = "Tuesday"; 
      } 
      else if (weekday == 4) 
      { 
       result = "Wednesday"; 
      } 

      else if (weekday == 5) 
      { 
       result = "Thursday"; 
      } 
      else if (weekday == 6) 
      { 
       result = "Friday"; 
      } 

      else if (weekday == 7) 
      { 
       result = "Saturday"; 
      } 
      else if (weekday == 0) 
      { 
       result = "Sunday"; 
      } 
      else 
      { 
       result = "ERROR"; 
      } 
      return result; 
     } 


     public static void main(String[] args) 
     { 
      System.out.println("Weekday 1: " + weekday_name(1)); 
      System.out.println("Weekday 2: " + weekday_name(2)); 
      System.out.println("Weekday 3: " + weekday_name(3)); 
      System.out.println("Weekday 4: " + weekday_name(4)); 
      System.out.println("Weekday 5: " + weekday_name(5)); 
      System.out.println("Weekday 6: " + weekday_name(6)); 
      System.out.println("Weekday 7: " + weekday_name(7)); 
      System.out.println("Weekday 0: " + weekday_name(0)); 
      System.out.println(); 
      System.out.println("Weekday 43: " + weekday_name(43)); 
      System.out.println("Weekday 17: " + weekday_name(17)); 
      System.out.println("Weekday -1: " + weekday_name(-1)); 

      Calendar calender = new GregorianCalendar(); 
      int dayofWeek = calender.get(Calendar.DAY_OF_WEEK); 

      System.out.println("\nToday is a " + weekday_name(dayofWeek) + "!"); 
     } 

    } 

后,它会产生流动的输出:

Weekday 1: Sunday 
Weekday 2: Monday 
Weekday 3: Tuesday 
Weekday 4: Wednesday 
Weekday 5: Thursday 
Weekday 6: Friday 
Weekday 7: Saturday 
Weekday 0: Sunday 

Weekday 43: ERROR 
Weekday 17: ERROR 
Weekday -1: ERROR 

Today is a Saturday! 
1

你已经有了一个错字那里。这是Calendar而不是Calender

2.输出是:

Weekday 1: Sunday 
Weekday 2: Monday 
Weekday 3: Tuesday 
Weekday 4: Wednesday 
Weekday 5: Thursday 
Weekday 6: Friday 
Weekday 7: Saturday 
Weekday 0: Sunday 

Weekday 43: ERROR 
Weekday 17: ERROR 
Weekday -1: ERROR 

Today is a Saturday! 

所以看起来它为我工作。

3.您最好使用switch语句。这是更短的和优雅的,请看:

public static String weekday_name(int weekday) 
{ 
    switch (weekday) { 
     case 1: return "Sunday"; 
     case 2: return "Monday"; 
     case 3: return "Tuesday"; 
     case 4: return "Wednesday"; 
     case 5: return "Thursday"; 
     case 6: return "Friday"; 
     case 7: return "Saturday"; 
     case 0: return "Sunday"; 
     default: return "ERROR"; 
    } 
} 

输出是相同的,以及:)

0

挥霍和班上的错字

Calender calender = new GregorianCalender(); 
int dayofWeek = calender.get(Calender.DAY_OF_WEEK); 

必须

Calendar calender = new GregorianCalendar(); 
int dayofWeek = calender.get(Calendar.DAY_OF_WEEK); 
0

不是100 %相关,但枚举在这里给出了一个优雅的解决方案...

private enum WeekDay { 
    SUNDAY, 
    MONDAY, 
    TUESDAY, 
    WEDNESDAY, 
    THURSDAY, 
    FRIDAY, 
    SATURDAY; 

    static WeekDay fromDayNumber(int dayNumber) { 
     return WeekDay.values()[dayNumber -1]; 
    } 
} 

... Calendar calender = new GregorianCalendar(); int dayofWeek = calender.get(Calendar.DAY_OF_WEEK);

System.out.println("\nToday is a " + WeekDay.fromDayNumber(dayofWeek) + "!"); 

...