2 / 2 / 1
Регистрация: 15.10.2013
Сообщений: 15

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

14.12.2015, 21:01. Показов 2969. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru