Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.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_Calendar - Fatal编程技术网

Java日历变量格式

Java日历变量格式,java,calendar,Java,Calendar,我是一名新的java程序员,根据先前的建议,我开发了一个计算器,可以接受1-365之间的整数,并给出月份和日期。我不知道如何解决每个月作为单独的变量。完全卡住了。任何帮助都将不胜感激 import java.util.Scanner; public class principal { public static void maxn(String[] args) { Scanner input = new Scanner(System.in); int

我是一名新的java程序员,根据先前的建议,我开发了一个计算器,可以接受1-365之间的整数,并给出月份和日期。我不知道如何解决每个月作为单独的变量。完全卡住了。任何帮助都将不胜感激

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;
                                            }


                                        }
                                    }
                                }
import java.util.Scanner;
公共课校长{
公共静态void maxn(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int x=0;
国际日期;
如果(x<30){
月份=“一月”;
日期=x;
系统输出打印项次(月+日);
}否则
x+=31;
如果(31
根据我对您的问题的理解,您可能想要这样的东西:

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
日期:2013年11月21日星期四14:12:57东部标准时间


这里有两种完全不同的方法来做你想做的事情。第一种方法假设是当前年份(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();
  }
}

首先-我强烈建议使用现有的API来实现这一点。其次,您需要查看
if
语句的语法以及忘记声明月份的
。对于if语法,请使用
检查多个值。我真的不想对初学者说些苛刻的话,但您应该了解一下该语言我确信在互联网上有一些不错的初学者教程,只要用谷歌搜索一下就可以了。你知道,闰年的结果是不同的吗?西里尔-没有冒犯你的意思。我一直在学习一些很棒的教程,只是被要求用一种非常不同的方式来做。谢谢。