java代码帮助(可以解决)

时间:2016-11-15 14:37:31

标签: java

我正在尝试根据输入的月份和日期编写一个返回季节的代码。到目前为止我发现了这个,但似乎没有用。任何帮助都会很棒!!

#define TONE_PERIOD 10 /* Period in milliseconds */
unsigned long lastPulseStart;
byte volume;

void setup()
{
    volume = ...;
    lastPulseChange = millis();
}

void loop()
{
    if (lastPulseStart - millis() < TONE_PERIOD/2)
        analogWrite(pin, volume);
    else if (lastPulseStart - millis() < TONE_PERIOD)
        analogWrite(pin, 0);
    else
        lastPulseStart += TONE_PERIOD;
}

4 个答案:

答案 0 :(得分:1)

我不会发布代码让你自己找到它,这个算法非常有趣。 (这似乎是一个家庭作业)

但是使用它有一个更简单的解决方案:

public static final String[] SEASONS = {"Winter", "Spring", "Summer", "Fall"};

有了这个,你只需要找到一种方法将一个月和一天转换为0到3之间的季节。只是一个提示,有四个赛季分为12个月。如果您在特定月份和第15天之后,您实际上是在下一季。

最后一个提示,一切都是用数学基础算子(+ - / *%)完成的。

PS:如果有人没有发现这是一个答案,我会稍后添加代码(如果被要求的话);)

答案 1 :(得分:0)

第一个 if语句 if(month>=9&&month<=12),另一个如果需要添加=

答案 2 :(得分:0)

我纠正了你的方法。

public String season (int month, int day){
if (month>=9 && month<=12){
if (month >= 9 && day>=16 || month <=12 && day<=15){
    return "Fall";
}
}else if (month>=6 && month<=9){
if (month>=6 && day>=16 || month<=9 && day<=15){
    return "Summer";
}
}else if(month>=3 && month<=6){
if (month>=3 && day>=16 || month<=6 && day<=15){
    return "Sprint";
}
}else {
return "Winter";
}

return "";
 }

以下测试

System.out.println(sl.season(10, 18));
System.out.println(sl.season(7, 18));
System.out.println(sl.season(5, 18));
System.out.println(sl.season(2, 18));

打印出来

Fall
Summer
Sprint
Winter

答案 3 :(得分:0)

您可以将月份和日期转换为一个可比较的双倍。

int comparableDate = month * 100 + day; 

然后设置测试间隔

if( comparableDate >= 916 && comparableDate <= 1215)
  return "fall";
if( comparableDate >= 616 && comparableDate <= 615) 
  return "summer"; 

等。