0

我是java编程语言的初学者。我无法为这个程序编写代码,因为我不是布尔运算符方面的专家。我只是想知道你们那里的人将如何在书中编写这个问题,因为我无法弄清楚如何在没有 if/else 分支的情况下让这个程序工作。如果你们对这个问题感到恼火,我们将不胜感激。

书中的问题,

编写一个程序,要求用户输入月份(1 表示一月,2 表示二月等),然后打印该月的天数。对于二月,打印“28 天”。

    Enter a month: 5
    30 days

使用带有方法 public int getLength() 的类 Month 不要为每个月使用单独的 if/else 分支。使用布尔运算符。

谢谢!

*我不知道如何使用switch语句,我只是希望能够像书中所说的那样,

谢谢

4

4 回答 4

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

现在尝试使用它几个月。

于 2013-08-25T21:27:00.983 回答
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
        . . .
    }
}

其余代码(提示用户、获取输入、错误检查、打印答案)留作练习。:)

PS我无法想象在哪里Boolean进入这个。

于 2013-08-25T21:22:01.997 回答
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;}
}

但是其他人给出的答案在现实生活中会更好。

于 2013-08-25T21:27:55.063 回答
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");
}
于 2013-08-25T21:22:43.777 回答