javaのマイクロチャネル赤
マイクロチャネルは、人々の日常生活はと不可分である今のApp 、日常のコミュニケーション、小規模な転送、ビデオを簡単に呼び出します。
マイクロ手紙の封筒は、人々が夕食の後に友達と食べに出かけ、ほとんどの機能を使用することである AA マイクロ手紙の封筒、休日、家族や友人が赤い封筒を送信するために......
この記事では、使用教え javaの小さな赤い封筒のプロジェクトであることを!
注意事項
量に関連する点、2つの小数点変換操作の値型は留意すべきであるため。
プログラムが比較的単純であり、それは各赤色で最大値を達成しない 0.01 赤平均残り2 倍数性を。
/ *
*赤い封筒の設計要件:
* 1-赤最小0.01、最大200
2つの小数点以下の桁数の宗派でお金の* 2 - 赤い封筒
* 3 - 個々の赤の値は、係数を設定することで、回避するために、大きすぎます
* 4 - 封筒は、合計金額を満たします
* * / publicクラスRedPacketUtil {
//赤マイクロチャネルの最大値と最小値、および赤色係数の最大量
プライベート静的最終フロートMINMUM = 0.01f;
プライベート静的最終フロートMAXMUM = 200.00f。
プライベート静的最終フロートTIMES = 2.1f;
//現在の値を決定し、量が正確です
パブリックブールisRight(フロートお金、int型のカウント数){
//現在の平均値を計算
AVE =フロート(浮き)お金/数えます。
IF(AVE <MINMUM){
falseを返します。
}そうであれば(AVE> MAXMUM){
falseを返します。
}
trueを返します。
}
//赤封筒の各特定の量のために生成さ
公共フロートredPacket(フロートお金、フロート分、フロートMAXS、int型のカウント数){
//現在の数を決定します
{(== 1カウント)場合
//以下0.01元赤い封筒よりもそれを確保するために
お金=お金> MINMUM?お金:MINMUM。
リターン(フロート)(恐らくMath.round(金* 100))/ 100;
}
フロート最大= MAXS>お金?お金:MAXS。
//エンベロープの単一の番号を生成し、赤色の精度を確保します
フロート1 =(フロート)(Math.random()*(最大 - 最小)+分)。
1 =(フロート)(恐らくMath.round(1 * 100))/ 100。
フロートmoneyRest =(お金 - 1);
//赤い封筒の現在の数の妥当性を判断します
IF(isRight(moneyRest、カウント - 1)){
1を返します。
}そうしないと{
//再割り当て赤
フロートAVE =(FLOAT)moneyRest /(COUNT-1);
IF(AVE <MINMUM){
リターンredPacket(お金、分、1カウント)。
}そうであれば(AVE> MAXMUM){
リターンredPacket(お金、1、最大カウント)。
}
}
1を返します。
}
//スプリット封筒は、赤の指定された数を生成します
公共の一覧<フロート> splitRedPacket(フロートお金、int型のカウント数){
//現在の値を決定し、量が正確です
(もし!isRight(お金、カウント数)){
ヌルを返します。
}
//赤い封筒のそれぞれの数を記録
一覧<フロート> rpList =新しいのArrayList <フロート>();
//単一の赤い封筒の最大量
フロート最大=(フロート)(金* TIMES)/数。
最大=最大> MAXMUM?MAXMUM:最大。
フロート= 0オン;
//赤い封筒の各レコード番号の開始
以下のために(INT I 0 =; I <数; I ++){
1 = redPacket(お金、MINMUM、最大、カウント-i)を、
rpList.add(1)。
お金=お金 - 1。
}
rpListを返します。
}
パブリック静的無効メイン(文字列[] args){
RedPacketUtilのutil =新しいRedPacketUtil();
リスト<フロート>結果= util.splitRedPacket(200、10)。
System.out.println(結果)。
//合計金額を確認
フロート合計= 0;
{(結果をiはフロート)のために
合計=合計+ I;
}
System.out.println(合計)。
}}