[英]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.