С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/47: Рейтинг темы: голосов - 47, средняя оценка - 4.87
2 / 2 / 0
Регистрация: 04.03.2013
Сообщений: 26
1

Вводим дату выводим дату следующего дня. Как Оптимизировать

24.03.2013, 14:36. Показов 8653. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вводим дату выводим дату следующего дня
Как можно оптимизировать. Не использую специальные библиотеки.

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
public class Year {
    public static void main(String[] args) {
        int year, month, day;
        year = 2011;
        month = 2;
        day = 29;       
        if (month == 1 || month == 3 || month == 5 || month == 1 || month == 7
                || month == 8 || month == 10) {
            if (!(1 > day) && !(day > 30)) {
                day++;
                System.out.println(year + "." + month + "." + day);
            } else if (day == 31) {
                day = 1;
                month++;
                System.out.println(year + "." + month + "." + day);
            }
        } else if (month == 2) {
            if (!(0 > year) && !(year > 3000))              
                if (year % 400 == 0) {
                    if (!(1 > day) && !(day > 28)) {
                        day++;
                        System.out.println(year + "." + month + "." + day);
                    } else if (day == 29) {
                        day = 1;
                        month++;
                        System.out.println(year + "." + month + "." + day);
                    }
                } else if (year % 4 == 0 && year % 100 != 0) {
                    if (!(1 > day) && !(day > 28)) {
                        day++;
                        System.out.println(year + "." + month + "." + day);
                    } else if (day == 29) {
                        day = 1;
                        month++;
                        System.out.println(year + "." + month + "." + day);
                    }
                } else {
                    if (!(1 > day) && !(day > 27)) {
                        day++;
                        System.out.println(year + "." + month + "." + day);
                    } else if (day == 28) {
                        day = 1;
                        month++;
                        System.out.println(year + "." + month + "." + day);
                    }
                }
        } else if (month == 4 || month == 6 || month == 9 || month == 11) {
            if (!(1 > day) && !(day > 29)) {
                day++;
                System.out.println(year + "." + month + "." + day);
            } else if (day == 30) {
                day = 1;
                month++;
                System.out.println(year + "." + month + "." + day);
            }
        } else if (month == 12) {
            if (!(1 > day) && !(day > 30)) {
                day++;
                System.out.println(year + "." + month + "." + day);
            } else if (day == 31) {
                day = 1;
                year++;
                month = 1;
                System.out.println(year + "." + month + "." + day);
            }
        }
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Блог
24.03.2013, 14:36
Ответы с готовыми решениями:

Определить дату следующего дня
Помогите мне пожалуйста, Заданы три целых числа, которые задают некоторую дату. Определить дату...

Определить дату следующего дня
Помогите допилить прогу Мои потуги: package msc; import java.io.*; public class msc {...

Определить дату предыдущего дня и дату следующего дня
Условие 1::O_O: Дата некоторого дня определяется двумя натуральными числами m(порядковый номер...

Заменить каждую дату сообщения на дату следующего дня
В сообщении может содержаться дата в формате дд.мм.гггг. В заданном формате дд - целое число из...

5
любитель покушать
687 / 641 / 248
Регистрация: 25.09.2011
Сообщений: 1,313
24.03.2013, 14:58 2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Date;
 
class Main {
 
    public static void main(String[] args) {
        
    Date d = new Date(2012, 2, 25);
    long msdate = d.getTime();
    long oneday = 86400000L;
    
    Date ms = new Date(msdate+oneday);
    }
}
А дальше геттерами получаешь нужное значение из полученной даты
1
6 / 6 / 3
Регистрация: 25.03.2013
Сообщений: 56
25.03.2013, 12:10 3
Я бы опустил проверку на ввод адекватных чисел даты(например:что число месяца от 1 до 31 и больше 0 и т.п.),т.к. можно еще проверять на целочисленность и ввод именно чисел и т.п. Ведь в задаче главное я,так понимаю, научиться применять операторы if,else. Я сделал так:
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
public class Year {
 
    public static void main(String[] args) {
        int day = 30;//day-день
        int month = 4;//month-месяц
        int year = 2012;//year-год
            if ((day ++) > 28 && month == 2 && year%4 == 0 && year%400 == 0 && year%100 != 0)
            {
                day = 1; month ++;
                System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
            }
            
            else if((day ++)> 31 && (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10))
                {
                    day = 1; month++;
                    System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
                }
            else if((day ++)> 30 && (month == 2 || month == 4 || month == 6 || month == 9 || month == 11))
            {
                day = 1; month++;
                System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
            }
            else if((day ++)> 31 && month == 12)
            {
                day = 1; month =  1; year ++;
                System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
            }
        else 
            {
                day ++;
                System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
            }
                
    }
 
}
0
2 / 2 / 0
Регистрация: 04.03.2013
Сообщений: 26
25.03.2013, 12:30  [ТС] 4
Цитата Сообщение от barkass Посмотреть сообщение
Я бы опустил проверку на ввод адекватных чисел даты(например:что число месяца от 1 до 31 и больше 0 и т.п.),т.к. можно еще проверять на целочисленность и ввод именно чисел и т.п. Ведь в задаче главное я,так понимаю, научиться применять операторы if,else. Я сделал так:
А проверку дополнительную на февраль? У тебя получается если год не високосный, то в феврале появляются лишние дни.
0
6 / 6 / 3
Регистрация: 25.03.2013
Сообщений: 56
25.03.2013, 13:02 5
Цитата Сообщение от Danya_sky Посмотреть сообщение
А проверку дополнительную на февраль? У тебя получается если год не високосный, то в феврале появляются лишние дни.
сейчас допишим.

Добавлено через 23 минуты
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
public class Year {
 
    public static void main(String[] args) {
        int day = 28,month = 2,year = 2011;//day-день,month-месяц,year-год
            if ((day == 28) && month == 2 && year%4 == 0 && year%400 == 0 && year%100 != 0)
            {
                day = 1; month ++;
                System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
            }
            else if (day == 29 && month == 2 && !(year%4 == 0 && year%400 == 0 && year%100 != 0))
            {
                day = 1; month ++;
                System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
            }
            else if((day == 31) && (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10))
                {
                    day = 1; month ++;
                    System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
                }
            else if((day == 30) && (month == 4 || month == 6 || month == 9 || month == 11))
            {
                day = 1; month ++;
                System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
            }
            else if((day == 31) && month == 12)
            {
                day = 1; month =  1; year ++;
                System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
            }
        else 
            {
                day ++;
                System.out.println("дата следующего дня: " + year + ":" + month + ":" + day);
            }
                
    }
 
}
Дописал.ВСе тоже самое,что и у Вас,только без проверки.
0
0 / 0 / 0
Регистрация: 15.09.2013
Сообщений: 2
15.09.2013, 01:29 6
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
public class Task5 /*Я хотел избежать длинной конструкции из иф\элс.
                     Поэтому зашел с другой стороны: у меня есть (учитывая, что день, месяц и год мне даются рандомно)
                     всего четыре варианта ответа.
                     1. день +1. Месяц и год неизменны.
                     2. первый день следующего месяца.
                     3. первый день следующего года.
                     4. Выпадет невозможная дата (например 31 февраля).
                   Закладывая варианты "неудобных" дней в условие оператора я избегаю создание многочисленных операторов*/
                     
 
{public static void main(String[] args) 
 {int y = (int) (Math.random()*1000+1013);
  int m = (int) (Math.random()*11+1);
  int d = (int) (Math.random()*30+1);
  
{ if (d==31&&m==12)
     System.out.println ("Today Happy New " + y + " Year\nTomorrow 01.01." + (y+1));
   else { if ((d==31&&(m==1||m==3||m==5||m==7||m==8||m==10))||(d==30&&(m==4||m==6||m==9||m==11))||(d==29&&m==2&&y%4==0)||(d==28&&m==2&&y%4!=0))
      System.out.println ("Today " + d + "." + m + "." + y + "\nTomorrow 01." + (m+1) + "." + y);
    else { if ((d==31&&(m==4||m==6||m==9||m==11))||(d>29&&m==2)||(d==29&&m==2&&y%4!=0))
       System.out.println ("These are jokes random. (" + d + "." + m + "." + y + ")\nTry once again");
     else
        System.out.println ("Today " + d + "." + m + "." + y + "\nTomorrow " + (d+1) + "." + m + "." + y);
    }
   }
  }
 }
}
0
15.09.2013, 01:29
BasicMan
Эксперт
19315 / 2622 / 84
Регистрация: 17.02.2009
Сообщений: 10,364
Блог
15.09.2013, 01:29
Помогаю со студенческими работами здесь

Заменить каждую дату сообщения на дату следующего дня
Слова сообщения разделяются пробелами и знаками препинания . В сообщении может содержаться дата в...

Ввести одну дату и вывести дату следующего дня
Ограничиться условными операторами. Не использовать библиотеки time, datetime етц

Ввести одну дату и вывести дату следующего дня
Примеры: 1) Введите дату в программу, и она должна вывести вам дату следующего дня. (Например:...

Вычислить дату следующего дня, предыдущего дня и число дней в месяце
Дата некоторого дня характеризуется трема натуральными числами - a (год), b (номер месяца), c...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru