Поменять местами массив в цикле

Я пытался создать проект календарных упражнений для начинающих, и все, что мне нужно, - это если последняя дата января заканчивается в воскресенье, а затем начинается следующий месяц с понедельника. Вот мой код;

 public static void main(String[] args) 
    {

        String[] months= {"January","Febuary","March","April","May","June"
                   ,"July","August","september","October","November"
                   ,"December"
                 }; 
        String[] weekdays= {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

        int x;

        for(int k=0;k<12;k++) 
          { 
            if (months[k]= = "April" ||months[k]= = "june" ||months[k]= = "September" ||months[k]= = "November")
                {x=30;}
            else if (months[k]= = "Febuary") 
                {x=28;}
            else {x=31;}

            System.out.print(months[k]+"\n");


           for(int i=0;i<weekdays.length;i++) 
             {    
              System.out.print("\t"+weekdays[i]);
             }System.out.println();

           for(int m=1;m<=x;m++) {

               if (((m-1) %7) == 0)  //line break after 7 characters
               {
                   System.out.println();
               }
               System.out.print("\t"+m);
           }
           System.out.println();
    }
  }

Поменять местами массив в цикле

Я не могу понять ваш вывод

Rcordoval 17.12.2018 04:35
stackoverflow.com/questions/513832/…
user7 17.12.2018 04:48

Пожалуйста, прочтите «Как создать минимальный воспроизводимый пример». Затем используйте ссылку редактировать, чтобы улучшить свой вопрос (не добавляйте дополнительную информацию через комментарии). В противном случае мы не сможем ответить на ваш вопрос и помочь вам.

GhostCat 17.12.2018 08:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
90
2

Ответы 2

Ваша программа все еще нуждается в корректировке: 1. Первым днем ​​года может быть воскресенье или другой день недели. 2. Если последний день месяца - воскресенье, вы должны продолжить заказ, а не начинать с воскресенья с начала.

Я предлагаю вам скорректировать текущий код, или вы можете использовать существующую библиотеку https://www.javatpoint.com/java-util-calendar.

Привет спасибо. пожалуйста, посмотрите код еще раз, который я редактировал, и скажите, как это исправить.

judy 17.12.2018 07:03

Я считаю, что вы используете неправильный подход. Работа с датированным относится к работе с Locale, потому что все эти названия, такие как название месяца, дни недели в другом формате, уже есть в JVM. Вы должны использовать это:

public static void printCalendar(LocalDate date, Locale locale) {
    DateFormatSymbols symbols = new DateFormatSymbols(locale);
    WeekFields weekFields = WeekFields.of(locale);

    printMonthName(symbols, date);
    printWeekdayNames(symbols, weekFields);
    printWeekdays(weekFields, date);
}

private static void printMonthName(DateFormatSymbols symbols, LocalDate date) {
    System.out.println(symbols.getMonths()[date.getMonthValue() - 1]);
}

private static void printWeekdayNames(DateFormatSymbols symbols, WeekFields weekFields) {
    String[] weekdays = symbols.getShortWeekdays();
    DayOfWeek firstDayOfWeek = weekFields.getFirstDayOfWeek();
    int offs = firstDayOfWeek == DayOfWeek.SUNDAY ? 1 : firstDayOfWeek.ordinal() + 2;

    for (int i = 0; i < 7; i++)
        System.out.print('\t' + (offs + i >= weekdays.length ? weekdays[(offs + i) % 7] : weekdays[offs + i]));

    System.out.println();
}

private static void printWeekdays(WeekFields weekFields, LocalDate date) {
    LocalDate cur = date.withDayOfMonth(1).with(weekFields.dayOfWeek(), 1);
    boolean stop = false;

    do {
        if (cur.getMonthValue() == date.getMonthValue())
            System.out.format("\t%2d", cur.getDayOfMonth());
        else
            System.out.format("\t  ");

        cur = cur.plusDays(1);

        if (cur.getDayOfWeek() == weekFields.getFirstDayOfWeek()) {
            System.out.println();
            stop = cur.getMonthValue() != date.getMonthValue();
        }
    } while (!stop);
}

Test1:

printCalendar(LocalDate.of(2018, Month.DECEMBER, 17), Locale.US);

December
    Sun Mon Tue Wed Thu Fri Sat
                             1
     2   3   4   5   6   7   8
     9  10  11  12  13  14  15
    16  17  18  19  20  21  22
    23  24  25  26  27  28  29
    30  31

Test2:

printCalendar(LocalDate.of(2018, Month.DECEMBER, 17), Locale.ITALIAN);

dicembre
    lun mar mer gio ven sab dom
                         1   2
     3   4   5   6   7   8   9
    10  11  12  13  14  15  16
    17  18  19  20  21  22  23
    24  25  26  27  28  29  30
    31

Другие вопросы по теме