自動雨刷問題

2021-09-29 12:48:46 字數 1894 閱讀 4038

今天老師為了讓體驗設計模式布置了一道自動雨刷的問題,題目大致是汽車雨刷的速度控制由lever和dial控制,關係如下表:

手動實現的部分較為簡單,題目中還提供了類圖

只需要按照類圖實現類和方法就行了,但是題目有公升級,要自動雨刷,根據雨量自動調節雨刷速度。

雨量和速度的關係如下圖:

其中雨量的資料是要求由程式自動生成的符合正態分佈的一組資料。

這個之前還真的沒見過,在網上搜尋也只告訴我在random類中有nextgaussian()這樣乙個方法可以生成

題目要求是生成0到100之間的30個資料。

於是我想了很久,最後寫出了這樣的一段**。

public int getnum() 

}for (int i = 0; i < 30; i++)

}return numarr;

}

因為是題目給定的範圍所以像重複1200次這些都是自己試出來的。

(5 * random.nextgaussian() + 15,這句中的5和15代表的方差和均值。

又因為我只需要30個資料所以只去了0到29之間的數進行統計。

統計結果單個超過100的就封頂到100。

於是拿到了合適的資料像這樣

142

7131018

3249

5470

7485

9693

10086

8782

5449

4525

221199442

接下來就是自動控制的部分。

因為自動控制還是要基於手動控制,在lever和dial類中沒有提供set方法來直接指定lever和dial的值,所以我們要根據雨量來模擬調整操作。

第一步肯定是先實現兩個方法來了解根據當前的雨量,lever和dial應該是多少。**如下:

static public int checklever(int n)  else if (n >= 1 && n <= 45)  else if (n >= 46 && n <= 80)  else if (n >= 81 && n <= 100) 

return lever;

}static public int checkdial(int n, int now) else if (n >= 16 && n <= 30) else if (n >= 31 && n <= 45) else

return dial;

}

然後判斷現在的lever和dial值與應該的值有沒有差,差多少,差多少就迴圈使用up或down的方法幾次。直到把30次資料都過完。**如下。

for (int i = 0; i < 30; i++) 

} else }}

if (dpos - tdial != 0)

} else }}

agent.dealspeed();

// system.out.println(arr[i] + "," + agent.getspeed());

str = str.concat(arr[i] + "," + agent.getspeed() + "\r\n");

}

最後題目要求輸入到檔案中,這個就很簡單了。

然後就完成了。

雨刷問題及相關課程作業總結

雨刷問題及相關課程作業總結 近幾周學習內容,課程方面包括物件導向七大設計原則 雨刷問題 作業方面則包括pta,及實驗題,現對上述學習內容進行階段性總結如下。雨刷問題 由雨刷問題開始的七大設計原則 第一次雨刷1.0 課上給出了雨刷系統的基本運作模式,根據司機對控制桿,刻度盤的調節,改變雨刷的狀態 主要...

梅花雨網頁日曆控制項 問題

梅花雨網頁日曆控制項是乙個不錯的日曆控制項,在網頁上使用很方便,不過在用vs2005開發時碰到了一些問題 1.出現未結束的字串常量 這個問題一般是編碼引起的,vs2005中預設的網頁是utf 8編碼的,而這個日曆是gb2312的編碼,所以出錯了,有2個解決辦法 乙個是在應用js檔案的時候指定編碼為g...

python 自動刷伺服器

code python coding utf 8 import cookielib import mechanize import urllib br mechanize.browser cj cookielib.lwpcookiejar br.set cookiejar cj br.open 需要...