繁体   English   中英

布尔表达式— Java

[英]Boolean expression — Java

我正在编写Java代码,其中显示了第0到6天的降雨量直方图(以毫米为单位)。 day0是星期一,day6是星期日。 我为以下7天的平均降雨量编写的代码如下:

                 public float averageRain() {
                   int d;                                  
                   float total = 0.0f;                         
                   for (d = 0; d < days; d++)
                     total=total + rain[d];                 
                   return(total / days); 
                 }

但是,我受困于如何解决以下问题:如果您输入的天数小于0或大于6,则会收到错误消息。 我的任务是修改一个名为“ addRain”的方法,以检查日期是否在范围内(即0或更大,但小于固定天数)。 如果当天有效,则将RAINFALL添加到当天的总计中并返回true。 否则返回false。 这样,当我运行该程序时,无效天将被忽略。 另外,我必须修改代码,以使负降雨值(例如-3 mm)不被接受。 谁能告诉我如何解决这个问题? 到目前为止,我所做的就是:

                public boolean addRain(int day, float rainfall) {
                  rain[day] += rainfall;                      
                  return(true);  
                }

我假设days是一个常量,值为7。将其替换为:

private static final int DAYS_IN_WEEK = 7;

您是否只想忽略无效的日数或降雨值? 这是一个互动程序吗? 而且,您是否要让人们一天输入两次降雨值? 我可以看到有人在星期三输入10mm ,然后尝试更正并输入5mm 当前,尚无办法。 如果您知道如何使用异常,则可以让您的方法抛出java.lang.IllegalArgumentException并将其报告给用户,以便他可以重试:

public void setRainForDay(int day, float rainfall) {
    if (day < 0 || day >= DAYS_IN_WEEK) {
        // Throw an IAE.
    }
    if (rainfall < 0.0f) {
        // Throw an IAE.
    }
    rain[day] = rainfall;  // Set, not add.
}

调用例程捕获IAE,并将其报告给用户,然后用户可以重试。

摇摆

我还没有意识到该应用程序应该是Swing应用程序。 在这种情况下,抛出异常不是适当的方法。 取而代之的是,一个想要拥有一个模型类 ,一个用于保存数据,一个想要拥有视图类 ,一个想要拥有执行实际工作的控制器类 而且,人们想使用PropertyChangeListenerVetoableChangeListener 在降雨JFormattedTextField输入-10 ,它将向控制器发送属性更改事件,然后辉格必须拒绝设置模型类,而否决了更改。 实际上,编写和应用InputValidator会更简单。 最好不要给用户错误的机会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM