Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
2 / 2 / 1
Регистрация: 15.10.2013
Сообщений: 15

Вывод календаря на заданый месяц. Не могу понять почему вывод странный такой

14.12.2015, 21:01. Показов 2947. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть в том, что никак не считает правильно пробелы в первой неделе. Постоянно бред какой-то получается. При любом месяце. Задавал уже разные годы и месяцы. Не пойму в чем беда. Помогите.
Java
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package javaapplication1;
 
import java.text.DateFormatSymbols;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
 
/**
 * Created by Олег on 05.12.2015.
 */
public class JavaApplication1 {
    public static void main(String[] args){
        Date time = new Date();
        System.out.println(time);
        GregorianCalendar now = new GregorianCalendar();
        int today = now.get(Calendar.DAY_OF_MONTH);
        int month = now.get(Calendar.MONTH);
        now.set(Calendar.DAY_OF_MONTH, 1);
        int weekday = now.get(Calendar.DAY_OF_WEEK);
        int FirstDayOfWeek = now.getFirstDayOfWeek();
        int in = 0;
        while (weekday != FirstDayOfWeek){
            in++;
            now.add(Calendar.DAY_OF_MONTH, -1);
            weekday = now.get(Calendar.DAY_OF_WEEK);
        }
        String [] WeekDayNames = new DateFormatSymbols().getShortWeekdays();
        do{
            System.out.printf("%4s", WeekDayNames[weekday]);
            now.add(Calendar.DAY_OF_MONTH, 1);
            weekday = now.get(Calendar.DAY_OF_WEEK);
        }while(weekday != FirstDayOfWeek);
        System.out.println();
        for(int i = 1; i<=in; i++)
            System.out.print(" ");
        
        now.set(Calendar.DAY_OF_MONTH, 1);
        do{
            int day = now.get(Calendar.DAY_OF_MONTH);
            System.out.printf("%3d", day);
            if(day == today)
                System.out.print("*");
            else
                System.out.print(" ");
            now.add(Calendar.DAY_OF_MONTH, 1);
            weekday = now.get(Calendar.DAY_OF_WEEK);
            if (weekday == FirstDayOfWeek)
                System.out.println();
        }
        while(now.get(Calendar.MONTH) == month);
        if(weekday != FirstDayOfWeek)
            System.out.println();
    }
}

Первое число должно быть во вторник. Програма работает верно, так как выводит в первой неделе только 6 дней. Но...пробелы.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.12.2015, 21:01
Ответы с готовыми решениями:

Вывод календаря на заданный месяц
Здравствуйте. Дали задание, никак не могу с ним совладать... Задана дата в виде месяц, год. Вывести календарь на заданный месяц. Да такой,...

Не могу понять как делать вывод на экран структуры STUDENT на заполнение и вывод данных на экран
Добрый вечер. Вот задание и мой код программы на C++ Не выходит нормально реализовать 3е задание. Первая проблема в том, что вывод на...

Не могу разобраться с классом. Странный вывод
Имеется программа по вычислению площади прямоугольника по координатам двух его углов: #include &lt;iostream&gt; #include...

1
34 / 34 / 21
Регистрация: 01.11.2013
Сообщений: 319
15.12.2015, 11:24
Вот так можно:
Отступ на всех месяцах не тестировал, подправишь как надо.
Java
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public class JavaApplication1 {
    public static void main(String[] args){
        Date time = new Date();
        System.out.println(time);
        GregorianCalendar now = new GregorianCalendar();
        int today = now.get(Calendar.DAY_OF_MONTH);
        int month = now.get(Calendar.MONTH);
        now.set(Calendar.DAY_OF_MONTH, 1);
        int weekday = now.get(Calendar.DAY_OF_WEEK);
        int FirstDayOfWeek = now.getFirstDayOfWeek();
        int in = 0;
        while (weekday != FirstDayOfWeek){
            in++;
            now.add(Calendar.DAY_OF_MONTH, -1);
            weekday = now.get(Calendar.DAY_OF_WEEK);
        }
        String [] WeekDayNames = new DateFormatSymbols().getShortWeekdays();
        do{
            System.out.print("   "+WeekDayNames[weekday]);
            now.add(Calendar.DAY_OF_MONTH, 1);
            weekday = now.get(Calendar.DAY_OF_WEEK);
        }while(weekday != FirstDayOfWeek);
        System.out.println();
        
//        for(int i = 1; i<=in; i++)   не понял зачем тебе это надо было
//            System.out.print(" ");
        
        now.set(Calendar.DAY_OF_MONTH, 1);
        boolean flag=true;
        do{
            int day = now.get(Calendar.DAY_OF_MONTH);
            int temp=now.get(Calendar.DAY_OF_WEEK);
            if(flag){
                switch(temp){
                    case 1:
                        System.out.printf("%30s", "");
                        flag=false;
                        break;
                    case 2:
                        flag=false;
                        break;
                    case 3:
                        System.out.printf("%5s","");
                        flag=false;
                        break;
                    case 4:
                        System.out.printf("%10s", "");
                        flag=false;
                        break;
                    case 5:
                        System.out.printf("%15s","");
                        flag=false;
                        break;
                    case 6:
                        System.out.printf("%20s","");
                        flag=false;
                        break;   
                    case 7:
                        System.out.printf("%25s","");
                        flag=false;
                        break;                          
                }
            }
            //System.out.println("temp= "+ temp);
            System.out.printf("%4d", day);
            if(day == today)
                System.out.print("*");
            else
                System.out.print(" ");
            now.add(Calendar.DAY_OF_MONTH, 1);
            weekday = now.get(Calendar.DAY_OF_WEEK);
            if (weekday == FirstDayOfWeek)
                System.out.println();
        }
        while(now.get(Calendar.MONTH) == month);
        if(weekday != FirstDayOfWeek)
            System.out.println();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.12.2015, 11:24
Помогаю со студенческими работами здесь

Почему такой вывод?
Все привет! Кто-нибудь может объяснить, почему так происходит? .map(parseInt) Выводит Добавлено через 11 минут При чем...

Почему вывод такой карявый
string id_devicetype = &quot;&quot;; for (int i = 0; i &lt; 200; i++) { switch (i) ...

Почему вывод в консоли на Debian не такой как на Windows
Всем привет, подскажите почему вывод не в таблице.... Имеется код следующего вида (Вывод многомерных массивов в консоль) public...

Как работает данный код и почему такой вывод?
Написал какой-то код, выводит в дебаге 5 в релизе 0 #include &lt;iostream&gt; using namespace std; void print_num(int f) { ...

Почему такой бредовый вывод типов и как с этим быть?
Если так let add (a:float) (b:float) (c:float) = b * b - a * c;; то всё нормально val add : a:float -&gt; b:float -&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru