2013-02-11 5 views
0

Я новый программист Java, работающий над предыдущими предложениями для создания калькулятора, который может принимать целое число от 1-365 и указывать месяц и дату. Я не уверен, как каждый месяц разрешать отдельные переменные. Полностью застрял. Любая помощь будет принята с благодарностью.Формат Java Calendar variable

import java.util.Scanner; 

public class principal { 
    public static void maxn(String[] args) { 
     Scanner input = new Scanner(System.in); 

     int x = 0; 
     int date; 
     if (x < 30) { 
      month = "January"; 
      date = x; 
      System.out.println(month + " " + day); 
     } else 
      x += 31; 
     if (31 < x < 58){ 
      String month = "February"; 
      day -= x;   

     if (31 < x < 58 < 89) { 
      month = "March" 
      day -= x; 

      if (31 < x < 58 < 89 < 120) { 
       month = "April" 
       day -= x; 

       if (31 < x < 58 < 89 < 120 < 150) ; 
       { 
        month = "May" 
        day -= x; 

        if (31 < x < 58 < 89 < 120 < 150 < 180) ; 
        { 
         month = "June" 
         day -= x; 

         if (31 < x < 58 < 89 < 120 < 150 < 180 < 211) { 
          month = "July" 
          day -= x; 

          if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242) { 
           month = "August" 
           day -= x; 

           if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242 < 273) { 
            month = "September" day -= x; 

            if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242 < 273 < 303) { 
             month = "October" day -= x; 

             if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242 < 273 < 303 < 334) { 
              month = "November" 
              day -= x; 

              if (31 < x < 58 < 89 < 120 < 150 < 180 < 211 < 242 < 273 < 303 < 365) { 
               month = "December" 
               day -= x; 
              } 


             } 
            } 
           } 
+0

Во-первых - я бы предложил использовать существующий API для этого. Во-вторых, вам нужно посмотреть на синтаксис операторов 'if' и' '' operator. 'if (31

+0

вы забыли объявить месяц. и если для синтаксиса используйте 'или' для проверки нескольких значений. – Arpit

+0

Я действительно не хочу делать резкое замечание новичку, но вы должны немного изучить язык перед его использованием. Я уверен, что в Интернете есть интересные учебники для начинающих, просто их Google. –

ответ

0

Из того, что я понимаю из вас вопрос, вы хотели бы что-то вроде этого:

int yourInt = 325; // YOUR NUMBER HERE, BETWEEN 1 and 365 
Calendar cal = Calendar.getInstance(); 
cal.set(Calendar.YEAR, 2013); //depending on the year you want 
cal.set(Calendar.DAY_OF_YEAR, yourInt); 

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
try { 
    Date myDate = sdf.parse(sdf.format(cal.getTime())); 
    System.out.println("date : " + myDate.toString()); 
    System.out.println("month : " + (cal.get(Calendar.MONTH) + 1)); //+1 because January is 0 
    System.out.println("day of month : " + cal.get(Calendar.DAY_OF_MONTH)); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

Изменение года, конечно, изменить значение, которое вы получаете.

С помощью 325 в качестве целого числа вы будете получать этот вывод:

месяц: 11
день месяца: 21
дата: чт 21 ноября 14:12:57 EST 2013

0

Вот 2 совершенно разных способа сделать то, что вы хотите. Первый предполагает текущий год (i.t.o високосные годы), второй предполагает, что это не показатель високосного года.

public static void main(String[] args) throws IOException 
{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String line = br.readLine(); 
    while (!line.isEmpty()) 
    { 
    int i = Integer.parseInt(line); 

    // way 1 
    Calendar c = Calendar.getInstance(); 
    c.set(Calendar.DAY_OF_YEAR, i); 
    System.out.println(c.get(Calendar.DAY_OF_MONTH) + " " + 
         DateFormatSymbols.getInstance().getMonths()[c.get(Calendar.MONTH)]); 

    // way 2 
    String[] months = {"JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"}; 
    int[] days = {31,28,31,30,31,30,31,31,30,31,30,31}; 
    int j = 0; 
    while (i > days[j]) 
     i -= days[j++]; 
    System.out.println(i + " " + months[j]); 

    line = br.readLine(); 
    } 
}