2015-05-05 2 views
-1

Я пытаюсь написать программу, которая подсчитывается через дни недели, когда ей присваивается номер. Я хочу написать это без использования массивов., Или перечисляющих типов, просто методов. Как я могу это сделать? Я также хочу, чтобы в качестве отправной точки можно было установить день недели.Работа с днями недели

Благодаря

public static void main(String[] args); 
{ 
    int sunday, monday, tuesday, wednesday, thursday, friday, saturday; 
    int week; 
    int day; 

    System.out.println(" Day of the week is" + day); 

    public void count() 


    public void week() 

    public void printday() 

    public void nextday() 

    public void previousday() 

Я не лучший в этом, но я полагаю, что практика делает совершенным

+1

использование ArrayList вместо массива – Lrrr

+1

Вы можете использовать 'ENUMS' –

+0

@AfsunKhammadli' Я хочу написать это без использования массивов., Или перечисление types' – Dici

ответ

1

Это должно сделать свой трюк, если я правильно понял ваш вопрос :)

/** 
* 
* @param startingDay - day of the week starting point (need to be between 0-6) 
* @param noDays number of days to count 
* @return result Day of the week 
*/ 
private static WeekDays getWeekDay(int startingDay, int noDays){ 
    int dayNr = noDays % 7; 
    int finalDayNr = (startingDay + dayNr) % 7; 
    return WeekDays.values()[finalDayNr]; 
} 

private static enum WeekDays { 
    SUNDAY, 
    MONDAY, 
    TUESDAY, 
    WEDNESDAY, 
    THURSDAY, 
    FRIDAY, 
    SATURDAY 
} 

И версия с не ENUM, однако версия Enum желательно ... с любой точки зрения, вы может подумать.

/** 
* 
* @param startingDay 
*   - day of the week starting point (need to be between 0-6) 
* @param noDays 
*   number of days to count 
* @return result Day of the week 
*/ 
private static String getWeekDay(int startingDay, int noDays) { 
    int dayNr = noDays % 7; 
    int finalDayNr = (startingDay + dayNr) % 7; 
    return getDay(finalDayNr); 
} 

private static String getDay(int dayNr) { 
    switch (dayNr) { 
    case 0: 
     return "SUNDAY"; 
    case 1: 
     return "MONDAY"; 
    case 2: 
     return "TUESDAY"; 
    case 3: 
     return "WEDNESDAY"; 
    case 4: 
     return "THURSDAY"; 
    case 5: 
     return "FRIDAY"; 
    case 6: 
     return "SATURDAY"; 
    } 
    throw new IllegalArgumentException("Wrong input. Day nr must be between 0-6."); 
} 

образца Использование (для любого из двух подхода):

public static void main(String[] args) { 
    System.out.println(getWeekDay(0, 15)); 
    System.out.println(getWeekDay(1, 15)); 
    System.out.println(getWeekDay(5, 3)); 
} 
+0

Он делает не хотите перечислять или массивы, вы используете – Dici

+0

вы что, шутите? :) – Alex

+2

Нет, поэтому я не ответил бы на такой вопрос. Плохие вопросы приводят к плохим ответам, потому что мы должны просто сказать ему, что он не должен пробовать его без перечислений, даже если это возможно – Dici

1

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

Этот конкретный образец повторяется с 3-го дня (0 в понедельник) до 14 дня.

for (int i = 3; i < 15; i++) { 
    String s = null; 
    switch (i % 7) { 
     case 0: s = "Monday"; break; 
     case 1: s = "Tuesday"; break; 
     case 2: s = "Wednesday"; break; 
     case 3: s = "Thursday"; break; 
     case 4: s = "Friday"; break; 
     case 5: s = "Saturday"; break; 
     case 6: s = "Sunday"; break; 
    } 
    System.out.println(s); 
} 
-1
public static void main(String[] args) { 

    int day = 1; 

    System.out.println(isWeek(day)); 
    printday(day); 

} 

public static boolean isWeek(int day) { 
    // Sunday or Saturday 
    if (day == 1 || day == 7) { 
     return false; 
    } 

    return true; 
} 

public static void printday(int day) { 
    switch (day) { 
    case 1: 
     System.out.println("Sunday"); 
     break; 
    case 2: 
     System.out.println("Monday"); 
     break; 
    // Until Saturday 

    default: 
     break; 
    } 
} 

Плохой код, но без массивов или Перечисления коснуться, как это?

Смежные вопросы