GaneshRfromSpace Ответов: 4

Как вывести название дня из ввода даты, разделенного пробелами в java ?


Вам назначена дата. Ваша задача состоит в том, чтобы найти, какой день на эту дату.

входной формат

Одна строка ввода, содержащая разделенные пробелом месяц, день и год соответственно в формате ММ ДД гггг.

выходной формат

Выведите правильный день заглавными буквами.

Мой код:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int month = in.nextInt();
        int day = in.nextInt();
        int year = in.nextInt();
        Calendar cal = Calendar.getInstance();
        
        cal.set(month,day,year);
        switch(cal.get(cal.DAY_OF_WEEK))
            {
            case 1:System.out.println("SUNDAY");
            break;
            case 2:System.out.println("MONDAY");
            break;
            case 3:System.out.println("TUESDAY");
            break;
            case 4:System.out.println("WEDNESDAY");
            break;
            case 5:System.out.println("THURSDAY");
            break;
            case 6:System.out.println("FRIDAY");
            break;
            case 7:System.out.println("SATURDAY");
            break;
        }
    }
}


Что я уже пробовал:

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

4 Ответов

Рейтинг:
32

Garth J Lancaster

вы уверены

cal.set(month,day,year);


правильно ? Я бы посмотрел на доктора Календарь (Java Platform SE 7 )[^]- Я бы подумал, что использование календаря для этого было бы излишним - в мое время мы использовали конгруэнтность Зеллера, и нам это нравилось Конгруэнтность Целлера-Википедия, свободная энциклопедия[^]


GaneshRfromSpace

Спасибо. Реализовал правило Зеллера, и оно отлично работало для всех тестовых случаев.

Рейтинг:
2

Member 12950633

я столкнулся с той же проблемой, неправильным было то, что месяцы в классе callender начинаются с 0 до 11,
Итак, 0=январь,
1= февраль ,...
..
...
и так далее...
решение этой проблемы есть ..

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
		int month = in.nextInt();
		int day = in.nextInt();
        
        
        int year = in.nextInt();
        Calendar cal = Calendar.getInstance();
          
      /// cal.set(month,day,year);
	  cal.set(cal.YEAR,year);
	  cal.set(cal.MONTH,month-1);
	  cal.set(cal.DATE,day);
//System.out.println("Calendar's year:-- " + cal.get(Calendar.YEAR));
	  // System.out.println("Calendar's month:-- " + cal.get(Calendar.MONTH));
		
		 //  System.out.println("Calendar's Date:-- " + cal.get(Calendar.DATE));
		  // System.out.println( + cal.get(Calendar.DAY_OF_MONTH));
		 //   System.out.println("Calendar's Day:-- " + cal.get(Calendar.DAY_OF_WEEK));
        // switch(cal.get(cal.DAY_OF_WEEK))
		
						switch(cal.get(Calendar.DAY_OF_WEEK))
            {
            case 1:System.out.println("SUNDAY");
            break;
            case 2:System.out.println("MONDAY");
            break;
            case 3:System.out.println("TUESDAY");
            break;
            case 4:System.out.println("WEDNESDAY");
            break;
            case 5:System.out.println("THURSDAY");
            break;
            case 6:System.out.println("FRIDAY");
            break;
            case 7:System.out.println("SATURDAY");
            break;
        }
    }
}


Рейтинг:
1

Maciej Los

Зачем заставлять двери широко распахиваться? Java поддерживает пользовательские форматы для форматирования даты.

Проверить это: Настройка Форматов[^]
SimpleDateFormat (Java Platform SE 6)[^]

Здесь показан другой способ: Изменение формата даты в Java-строке-переполнение стека[^]


Рейтинг:
0

Member 11760184

Ответ будет таким

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int month = in.nextInt();
        int day = in.nextInt();
        int year = in.nextInt();
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month-1);
        c.set(Calendar.DAY_OF_MONTH, day);
        int day_of_week = c.get(Calendar.DAY_OF_WEEK); 
        String[] days = {"SUNDAY","MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
        System.out.print(days[day_of_week-1]);
    }
}


CHill60

Чем это отличается от решения 3? Не делай этого