[英]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应用程序。 在这种情况下,抛出异常不是适当的方法。 取而代之的是,一个想要拥有一个模型类 ,一个用于保存数据,一个想要拥有视图类 ,一个想要拥有执行实际工作的控制器类 。 而且,人们想使用PropertyChangeListener
和VetoableChangeListener
。 在降雨JFormattedTextField
输入-10
,它将向控制器发送属性更改事件,然后辉格必须拒绝设置模型类,而否决了更改。 实际上,编写和应用InputValidator
会更简单。 最好不要给用户错误的机会。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.