Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите, пожайлуста новичну найти ошибку в коде... / 7 сообщений из 7, страница 1 из 1
20.04.2007, 23:28:49
    #34477682
eugenija
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожайлуста новичну найти ошибку в коде...
Помогите, пожайлуста найти ошибку в этом коде.
Программка должна определить, является ли введенная дата правильной. Т.е, в январе, марте, мае, июле августе, октябре и декабре числа дня должны быть не больше 31,
в апреле, июне, сентябре и ноябре не больше 30, а в феврале не больше 28 (или 29 если високосный год.)

(У меня проблемы с выводом результата...Что нужно чтобы возвращал оператор return?????И как это вывести на экран????? )
Код:

Код: plaintext
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.
 public   class  Schaltjahr { 
  
  public   static   boolean  schaltJahrBerechnung ( int  jahr) { 
   return   ((jahr %  100  ==  0 ) && ((jahr %  400  ==  0 )) 
       || ((jahr %  100  !=  0 )) && (jahr %  4  ==  0 )); 
 } 

  public   static   boolean   monatBerechnung( int  tag,  int  monat,  int  jahr) { 
     if  ((monat== 1 )  | (monat== 3 )|(monat== 5 )|(monat== 7 )|(monat== 8 )|(monat== 10 )|(monat== 11 )) { 
      if  (tag<= 31 &tag>= 1 )     { 
       return  true; 
     } 
     else   if  ((monat== 4 )|(monat== 6 )|(monat== 9 )|(monat== 11 ))  
      if  (tag<= 31 &tag>= 1 )     { 
         return  true; 
          } 
     else   if  ((Schaltjahr.schaltJahrBerechnung(jahr)&& monat== 2 )) 
         if  (tag<= 29 &tag>= 1 )     { 
             return  true; 
              } 
         else   if  ((!Schaltjahr.schaltJahrBerechnung(jahr)&& monat== 2 )) 
             if  (tag<= 28 &tag>= 1 )     { 
                 return  true; 
                  } 
            
   } 
    {  return  (tag,  monat, jahr); 
    
    } 
    
    }} 

 public   class  test_schaltjahr1{ 
  
  public   static   void   main(String[]args) { 
  
  
  int  tag= 41 ; 
  int  monat= 2 ; 
  int  jahr= 1900 ; 
  
  
  boolean  schaltJahr=Schaltjahr.schaltJahrBerechnung(jahr); 
 if (schaltJahr) System.out.println(jahr + " ist schaltjahr"); 
 else  {System.out.println(jahr + " ist KEIN schaltjahr"); 
  
  
 //if(schaltJahr) System.out.println(jahr + " ist schaltjahr"); 
 System.out.printf(tag+"."+monat+"."+jahr+" ist gueltige datum"); 
  
  
}}}
...
Рейтинг: 0 / 0
21.04.2007, 00:27:19
    #34477721
eugenija
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожайлуста новичну найти ошибку в коде...
задание такое:
нужно ввести какую-то дату (например 1.2.2005)
Прога выведет, что такая дата существует.

А если ты введешь например 31.23.2000 - то получишь ответ, что такой даты не может быть.

Еще нужно учесть, что существуют високосные года - и в них будет не 28 а 29 дней в календаре.




Прога работает, только я не знаю как вывести в return булевые величины (int tag, int monat, int jahr) и указать, true они или false
...
Рейтинг: 0 / 0
21.04.2007, 01:44:30
    #34477762
fjord
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожайлуста новичну найти ошибку в коде...
зачем так сложно :) используйте GregorianCalendar, там все есть

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 public   class  Test {

     public   static   void  main(String[] args) {
         int  day =  29 ;
         int  month =  1 ;  // месяцы считаются с 0, т.е. 1 это февраль
         int  year =  1990 ;
        
        GregorianCalendar gcalendar =  new  GregorianCalendar(year, month, day);
        
        /* так можно определить количество дней в заданном году */
        System.out.println(gcalendar.getActualMaximum(gcalendar.DAY_OF_YEAR) + " днейв году");
        
         if (day >  31  || month >  12  || gcalendar.getActualMaximum(gcalendar.DAY_OF_MONTH) != ( new  GregorianCalendar(year, month,  1 ).getActualMaximum(gcalendar.DAY_OF_MONTH))){
            System.out.println("Ошибка введения даты");
        } else {
            System.out.println("Дата конрректна");
        }        
    }
   
}
...
Рейтинг: 0 / 0
21.04.2007, 01:55:03
    #34477765
eugenija
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожайлуста новичну найти ошибку в коде...
большое спасибо
...
Рейтинг: 0 / 0
21.04.2007, 12:49:02
    #34477946
mijer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожайлуста новичну найти ошибку в коде...
Как вариант:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 import  java.util.Calendar;

 public   class  Test {
     public   static   void  main(String[] args) {
         int  day =  32 ;
         int  month =  0 ;
         int  year =  2000 ;

        Calendar calendar = Calendar.getInstance();
        calendar.setLenient(false);
        calendar.set(year, month, day);

        String msg = "Дата корректа";
         try  {
            calendar.getTime();
        }  catch  (IllegalArgumentException e) {
            msg = "Ошибка введения даты";
        }

        System.out.println(msg);
    }
}
...
Рейтинг: 0 / 0
22.04.2007, 23:34:27
    #34479063
eugenija
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожайлуста новичну найти ошибку в коде...
Спасибо.
А что делает функция Calendar.getInstance()?? и calendar.setLenient(false);???
...
Рейтинг: 0 / 0
23.04.2007, 09:56:14
    #34479412
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожайлуста новичну найти ошибку в коде...
public static Calendar getInstance()
Gets a calendar using the default time zone and locale. The Calendar returned is based on the current
time in the default time zone with the default locale.

public void setLenient(boolean lenient)
Specifies whether or not date/time interpretation is to be lenient. With lenient interpretation, a date such as "February 942, 1996" will be treated as being equivalent to the 941st day after February 1, 1996. With strict (non-lenient) interpretation, such dates will cause an exception to be thrown. The default is lenient.


Nai tiruvantel ar varyuvantel i Valar tieyanna nu vilya
Aiya Eärendil Elenion Ancalima!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите, пожайлуста новичну найти ошибку в коде... / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]