Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2012, 17:46   #1
atenx
 
Регистрация: 26.03.2012
Сообщений: 4
По умолчанию [Java] Косяк с работой метода

Добрый день всем.
Задача состояла в следующем: разработать класс на яве, аналог TDateTime на си.
Проблема заключается в следующем: методы нахождения кол-ва дней в месяце и определение названия месяца не дают эффекта, тобишь провел отслеживание переменной iDay, отвечающей за хранение кол-ва дней в текущем месяце и, увы, она все время имеет начальное значение 31. (вводим -40, месяц меняется с 12 на 11, однако iDay остается равным 31).

Методы нахождения минут и секунд пока не трогал, так что на них можно не обращать внимания.
Джаву изучаю второй день, так что прошу не судить строго - любой адекватный совет мне сейчас в помощь.

Проблемы в методах cmDays и monName.

Текст программы:
Код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class DateTime{
	public int Hour, Minute, Second, mSecond; //Proceeding with time
	public static String month = "December";
	public int Day=30, iMon=12, year = 1899,iDay=31;
	public static double input=0.0;
	
public int visYear() //conditions of leap year; aka leap year check
{
	int iYr = 0;
	if(year % 4 == 0 && year % 100 != 0) iYr=1;
	if(year % 4 == 0 && year % 100 == 0 && year % 400 == 0) iYr=1;
	return iYr;
}
	
public int cmDays() //amount of days in current month
{
	switch(iMon)
	{
	case 1: iDay=31;
	case 2: if(visYear()==1) iDay=29;
		else iDay = 28;
	case 3: iDay=31;
	case 4: iDay=30;
	case 5: iDay=31;
	case 6: iDay=30;
	case 7: iDay=31;
	case 8: iDay=31;
	case 9: iDay=30;
	case 10: iDay=31;
	case 11: iDay=30;
	case 12: iDay=31;
	}
return iDay;
}	

public String monName()
{	
	switch(iMon)
	{
	case 1: month="January";
	case 2: month="February";
	case 3: month="March";
	case 4: month="April";
	case 5: month="May";
	case 6: month="Juny";
	case 7: month="July";
	case 8: month="August";
	case 9: month="September";
	case 10: month="October";
	case 11: month="November";
	case 12: month="December";
	}
	return month;
}

public int cYear()
{
int j;
int inVar = iInput();
if(inVar < 0) j = -1;
else j = 1;

while (inVar != 0){
	Day = Day + j;
	if(Day > cmDays())
	{
	Day = 1;
	iMon = iMon+1;
	}
	if(iMon > 12) iMon = 1;
	if(Day < 1)
	{
	iMon=iMon - 1;
	if(iMon < 1) iMon=12;
	Day=cmDays();
	}
	if(j > 0 && Day==1 && iMon==1) year=year+1;
	if(j < 0 && Day==31 && iMon==12) year=year-1;
	inVar = inVar - j; /* even if j == -1 && iInput < 0, we'll get it going to zero too*/
	}
return year; //return current year
}

public int iInput()
{	
	int iPart = (int)input;
	return iPart;
}

public double dInput()
{
	double fPart = input - (int)input;
	return fPart;
}

public int hTime()
{	Hour = 12;
	if(dInput() != 0) Hour = (int)(24*dInput());
	if(Hour < 0) Hour= -Hour;
	return Hour;
}

public int mTime()
{	int Minute = 00;
	return Minute;
}

public int sTime()
{
	int Second = 00;
	return Second;
}

public int msTime()
{
	int mSecond = 00;
	return mSecond;
}

public static void main(String[] args) throws IOException{
DateTime curDT = new DateTime();
BufferedReader inline = new BufferedReader(new InputStreamReader(System.in));
String a = inline.readLine();
DateTime.input = Double.parseDouble(a);
System.out.println(curDT.cYear() + " " + curDT.Day + " " + curDT.monName() + " " + curDT.hTime() + ":" + curDT.mTime());
}
}

Последний раз редактировалось atenx; 17.04.2012 в 17:47. Причина: не нашел тега спойлера
atenx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызов Java метода из c++ (JNI) Евгений643 Qt и кроссплатформенное программирование С/С++ 1 26.12.2011 00:58
Правильно ли написана процедура для Java native метода? LexaL Общие вопросы Delphi 0 04.05.2011 16:43
Вызов метода из метода kuzjma PHP 8 10.12.2010 02:38
Косяк в коде Dimon88 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 18.09.2008 18:09
Косяк Sanctuar Помощь студентам 1 18.06.2007 07:36