내가 무엇을 가지고 :윤년 알고리즘이 작동하지 않는 이유는 무엇입니까 (Java)? 여기
Scanner input = new Scanner(System.in);
System.out.print("Enter a year: ");
int Year = input.nextInt();
System.out.print("Enter a month (first three letters with the first"
+ " letter uppercase): ");
String Month = input.next();
String ThirtyOne = "Jan" + "Mar" + "May" + "Jul" + "Aug" + "Oct" + "Dec";
String DaysThirtyOne = ThirtyOne.substring(21) + "31";
String Thirty = "Apr" + "Jun" + "Sep" + "Nov";
String DaysThirty = Thirty.substring(12) + "30";
String TwentyEight = "Feb";
String DaysTwentyEight = TwentyEight.substring(3) + "28";
String DaysLeapYear = TwentyEight.substring(3) + "29";
boolean isLeapYear = ((Year % 4 == 0) && (Year % 100 != 0) && (Year % 400 == 0));
if (ThirtyOne.contains(Month)) {
System.out.println(Month + " " + Year + " has " + DaysThirtyOne
+ " days in it.");
}
if (Thirty.contains(Month)) {
System.out.println(Month + " " + Year + " has " + DaysThirty
+ " days in it.");
}
if(TwentyEight.contains(Month)) {
System.out.println(Month + " " + Year + " has " + DaysTwentyEight
+ " days in it.");
}
if (isLeapYear) {
System.out.println(Month + " " + Year + " has " + DaysLeapYear
+ " days in it.");
}
이 코드는 미숙 보이는 경우 나는 놀라지 않을 것이다, 그래서 내가 프로그래밍에 새로운 오전. 어쨌든, 나는 사용자 입력을 년 1 달 (처음 세 글자) 있습니다. 나는 사용자가 4, 100, 400으로 나눌 수있는 해가 무엇이든간에 윤년을 나타내는 부울 변수를 만들었습니다. 그런 다음 "Feb (모든 연도 사용자 입력)에 DaysLeapYear가 있습니다. " Twalloweight의 if 문을 꺼내서 진술서를 작성한 경우 컴퓨터에서 윤년 인 경우 2 월의 며칠을 인쇄하지 않기 때문에 알고리즘에 문제가 있다고 생각합니다. . 다시 말하지만, 나는 알고리즘에서 잘못 될 것 같지만, 다른 곳에서있을 수 있으며, 결국이 새로운 것을 본 사람이 아닌지를보기 위해 다른 모습을 기대하고 있습니다.
"윤년 알고리즘이 작동하지 않는 이유는 무엇입니까?"- 제대로 작동합니까? – Tucker
@ Tucker double negative. * facepalm –
'부울 isLeapYear = ((Year % 4 == 0) && (Year % 100! = 0) && (Year % 400 == 0)); - 이걸로 2000 년은 윤년이 아니었다 – khelwood