我是java编程语言的初学者。我无法编写此程序的代码,因为我不是布尔运算符的专家。我只是想知道你们那里的人会如何在书中编写这个问题因为我无法弄清楚如何在没有if / else分支的情况下使这个程序工作。如果你们对这个问题感到恼火,我们将不胜感激。
书中的问题,
编写一个程序,要求用户输入一个月(1月1日,2月2日等),然后打印当月的天数。二月份,打印“28天”。
Enter a month: 5
30 days
使用带有public int getLength()方法的Month类 不要每个月使用单独的if / else分支。使用布尔运算符。
谢谢!
*我不知道如何使用switch语句,我只是希望能够像书中所说的那样去做,
谢谢
答案 0 :(得分:2)
假设您不需要处理闰年,您的Month
类可能看起来像这样:
public class Month {
private int monthNumber;
public Month(int monthNumber) {
if (monthNumber < 1 || monthNumber > 12) {
throw new IllegalArgumentException(
"Month number must be between 1 and 12");
}
this.monthNumber = monthNumber;
}
public int getLength() {
return monthLengths[monthNumber - 1]; // indexes start at 0
}
private static int[] monthLengths = {
31, // January
28, // February
31, // March
. . .
}
}
剩下的代码(提示用户,获取输入,错误检查,打印答案)留作练习。 :)
P.S。我无法想象Boolean
在哪里进入。
答案 1 :(得分:2)
如果你想为指定的数字做点什么,你可以使用像
这样的东西if ( number == 1 ){
doSomething();
} else if ( number == 3 ){
doSomething();
} else if ( number == 5 ){
doSomething();
}
但是因为这种做法是禁止的
每个月不要使用单独的if / else分支。
使用布尔运算符。
你需要使用布尔OR ||
运算符,如
if (number==1 || number == 3 || number == 5){
doSomething();
}
现在尝试使用它几个月。
答案 2 :(得分:1)
我应该这样做:
public class Month
{
int month;
public Month(int _month)
{
this.month = _month;
}
public int getLength()
{
if(this.month == 2) { return 28 }
if(this.month<8)
{
if((this.month%2) == 1)
{
return 31
}
else
{
return 30
}
}
else
{
if((this.month%2) == 1)
{
return 30
}
else
{
return 31
}
}
} }
修改强> 在阅读了书中的更新问题后,我认为他们正在寻找类似的东西。
public int getLength()
{
if(this.month == 2) {return 28;}
if(this.month == 1 || this.month == 3 || this.month == 5 || this.month == 7 || this.month == 8 || this.month == 10 || this.month ==12){ return 31;}
if(this.month == 4 || this.month == 6 || this.month == 9 || this.month == 11){return 30;}
}
但其他人给出的答案在现实生活中更好。
答案 3 :(得分:0)
使用地图,其中键是用户输入的整数值,值是该月的天数。例如:
Hashmap<Integer, Integer> map = new Hashmap<Integer, Integer>();
map.put(1, 31);
...
map.put(12, 31);
然后请求输入并执行以下操作:
int input = ...;
if (map.containsKey(input)) {
System.out.println(map.get(input));
}
else {
System.out.println("Invalid month input");
}