那里|| INT的操作员 我正在尝试编写一种方法,该方法采用单个INT参数,即数字月并返回给定月份的天数。因此,一个参数为1,因为有31个...

问题描述 投票:0回答:4

i继续获取错误消息“操作员||不能应用于boolean,int。”谁能帮我弄清楚该怎么办?

您想要这样的东西:

if ( (month == 1) || (month == 3) || (month == 5) || (month == 7)
                  || (month ==  8) || (month == 10)

您可以避免使用任何开关,或者/否则使用新Java 1.8 Time API使用
java int boolean operators
4个回答
2
投票
java.time.Month

public static int daysInMonth(int month) {
    return Month.of(month).minLength();
}

2
投票

1
投票
boolean

| | ||

boolean
不是有效的动作

0
投票

int

或A
month == 1 || month == 3 || ...
此外,您也没有涵盖leap年的场景,它适合重复使用已经解决的问题
Map<Integer, Integer> monthNumberToMaxDaysMap

above方法仅考虑当年,您可以将其利用为通过一年

因此,如果您想要基本代码(不使用地图或其他特殊功能),则可以使用Switch来易于阅读。例如:

public static void daysInMonth(int month) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.MONTH, month -1); return cal.getActualMaximum(Calendar.DAY_OF_MONTH) }

其工作方式是开关的方式将继续执行,直到每种情况下都看到休息为止。以下代码将打印出0和1。

public static void daysInMonth(int month) { switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: System.out.println("31"); break; case 4: case 6: case 9: case 11: System.out.println("30"); break; case 2: System.out.println("28"); break; } }

是的,它非常长且效率低下,但仍然是一个基本解决方案。除非您是初学者,否则不是很建议。


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.