簡體   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