Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过标准输入输入日期。每周的输出日。_Java_Date_Calendar_Java.util.scanner - Fatal编程技术网

Java 通过标准输入输入日期。每周的输出日。

Java 通过标准输入输入日期。每周的输出日。,java,date,calendar,java.util.scanner,Java,Date,Calendar,Java.util.scanner,我需要的代码,以采取一个通过标准的输入和输出的一周的一天在普通英语的格式mm-dd-yyyy的日期 样本输入年月日:2016年9月23日 预期产出:星期五 输出错误:星期日 谁能解释一下这里出了什么问题吗?多谢各位 import java.io.*; import java.util.*; import java.time.*; public class DateToDay { public static void main(String[] args) { Scann

我需要的代码,以采取一个通过标准的输入和输出的一周的一天在普通英语的格式mm-dd-yyyy的日期

样本输入年月日:2016年9月23日

预期产出:星期五

输出错误:星期日

谁能解释一下这里出了什么问题吗?多谢各位

import java.io.*;
import java.util.*;
import java.time.*;

public class DateToDay {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int month = Integer.parseInt(in.next());
        int day = Integer.parseInt(in.next());
        int year = Integer.parseInt(in.next());

        if ((year > 2000) && (year < 3000)) {
            Calendar cal = Calendar.getInstance();
            Locale locale = Locale.getDefault();

            cal.set(Calendar.MONTH, month);
            cal.set(Calendar.DAY_OF_MONTH, day);
            cal.set(Calendar.YEAR, year);

            System.out.println(cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, locale).toUpperCase());
        }
        else {
            System.out.println("Invalid date entered.");
        }
    }
}
是以零为基础的:

月份公共静态最终整数月份

表示月份的get和set字段号。这是一个 日历特定值。公历一年中的第一个月 儒略历法是一月,也就是0;最后一个取决于 一年中的月数。另见:

因此,2016年10月9日是10月,10月23日是周日。因此,您必须使用cal.setCalendar.MONTH,MONTH-1

如果您使用的是java8,则只需使用新的DateTime API即可:

LocalDate date = LocalDate.of(year, month, day);
System.out.println(date.getDayOfWeek());

问题就在这里

cal.set(Calendar.MONTH, month);
如果Calendar.MONTH为0,则月份为一月

如果Calendar.MONTH为1,则该月为2月

如果Calendar.MONTH为2,则月份为3月,依此类推

因此,当您输入09作为输入时,Calendar.MONTH变为十月,而不是九月。这是因为,如上所述,Calendar.MONTH从0开始

请尝试以下方法:

cal.set(Calendar.MONTH, month-1);

请看:边注:考虑使用java SE 8中介绍的新日期和时间API:在发布之前搜索堆栈溢出。减去1必须位于值。不在关键时刻也要解释你的答案,而不仅仅是邮政编码
cal.set(Calendar.MONTH, month-1);