gpt4 book ai didi

java - boolean 表达式——Java

转载 作者:行者123 更新时间:2023-12-01 13:46:39 25 4
gpt4 key购买 nike

我正在编写一个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毫米)。谁能告诉我如何解决这个问题?到目前为止我所做的就是:

                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

我没有意识到该应用程序应该是一个 Swing 应用程序。在这种情况下,抛出异常不是合适的方法。相反,我们想要一个模型类,一个保存数据的类,一个 View 类,一个 Controller 类 做实际的工作。并且,我们想要使用 PropertyChangeListenerVetoableChangeListener。当您在降雨 JFormattedTextField 中输入 -10 时,它会向 Controller 发送一个属性更改事件,whig 必须拒绝设置模型类,而不是否决更改。实际上,编写和应用InputValidator会更简单。最好不要给用户犯错的机会。

关于java - boolean 表达式——Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20318176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com