-1

我们应该编写一个计算机科学程序,计算出你是在一周中的哪一天出生的。我们得到了这些指示。1) 从您出生年份的最后两位数字开始。2) 将上述数字除以 4,如果有 1,则舍去余数。3) 在月份表中找到与您出生月份相关的数字。4) 你的生日是一个月中的哪一天?5) 求在步骤 1 到 4 中获得的四个数字的总和。 6) 将总和除以数字 7。对应于天数表中余数的日期是您出生的星期几。

月表 日表
1 月 1 日(闰年 0) 2 月 1
日星期日(闰年 3) 3 月 2
日星期一 4 月 3 日星期二
4
月 3 日星期二 5 月 4 日星期三 6 月 5 日星期四 7
月 6 日星期五
0 月 0 日星期六
9
月 6 日
10 月 1
日 11 月 4
日 12 月 6 日

我一直在遇到无法比较的类型的问题:int 和 boolean,我不知道问题是什么,我尝试将变量更改为 boolean,但它没有解决任何问题。

package LeapYear;
import java.util.*;
public class Birthday
{
   static Scanner in= new Scanner(System.in);
    public static void main (String []args)
    {  

      int year=getYear();
      int month=getMonth(year);
      int day=getDay();
      int total=computeDay(day, month, year);
      int dayofbirth=dayOfWeek(day,month,year);

}//end main
        public static int getYear()
        {   

            System.out.println("Please enter the last two digits of the year you were born:");
            int y=in.nextInt();
            return y;
        }
        public static int getMonth(int year)
        {
            int m;
            System.out.println("Please select the month in which you were born:"+
                        "1.)Januaryn\n"+
                        "2.)February\n"+
                        "3.)March\n"+
                        "4.)April\n"+
                        "5.)May\n"+
                        "6.)June\n"+
                        "7.)July\n"+
                        "8.)August\n"+
                        "9.)September\n"+
                        "10.)October\n"+
                        "11.)November\n"+
                        "12.)December\n");
            m=in.nextInt();
            System.out.println("You entered " + m);
                        switch(m)
                        {
                            case 1: if(year ==true)
                        return 0;
                    else
                            return 1 ;
                            break;
                            case 2:if(year == true)
                            return 3;
                    else
                            return 4;
                            break;
                            case 3:return 4;
                            break;
                            case 4:return 0;
                            break;
                            case 5:return 2;
                    break;
                            case 6:return 5;
                            break;
                            case 7:return 0;
                            break;
                            case 8:return 3;
                            break;
                            case 9:return 6;
                            break;
                            case 10:return 1;
                            break;
                            case 11:return 4;
                            break;
                            case 12:return 6;
                            break;      

                        }//end case

        }//end getMonth
        public static int getDay()
        {
            int d;
            System.out.println("Please enter the day on which you were born");
            d=in.nextInt();
            return d;

        }//end getDay
        public static int computeDay(int day, int month, int year)
        {
            int weekday;
            int y2=year/4;
        int m2= month + y2 + day;
        int total=m2/7;
        return total;

        }//end computeDay
     public static int dayOfWeek(int day, int month, int year, int total)
     {
        int dob;
           switch(dob)
           {
           case 1:if (total=1)
           System.out.println("You were born on a Sunday");
           break;
           case 2:if (total=2)
           System.out.println("You were born on a Monday");
           break;
           case 3: if (total=3)
           System.out.println("You were born on a Tuesday");
           break;
           case 4: if(total=4)
           System.out.println("You were born on a Wednesday");
           break;
           case 5: if(total=5);
           System.out.println("You were born on a Thursday");
           break;
           case 6: if (total=6);
           System.out.println("You were born on a Friday");
           break;
           case 7: if (total=7);
           System.out.println("You were born on a Saturday");
           break;
           }


     }//end dayOfWeek




}//end class
4

1 回答 1

1

if(year == true)无法编译,因为整数不能为真。使用该语句做一些有用的事情,例如:

if(year < 50)
{
    System.out.println("Wow, you're old!");
    return 0;
}

因为您只得到他们出生年份的最后两位数字,所以您将难以确定用户是在 1905 年还是 2005 年出生。这种情况不太可能发生,但您将无法破译该用户是否是出生于本世纪或上世纪。如果不知道是可以接受的,就不要改变它。如果没有,您将需要从用户那里获取更多信息。

于 2014-12-10T01:13:42.157 回答