자바 위 챗 보너스 실현

머리말
        상여금 문 화 는 역사가 유구 하 다.옛날 에 빨간색 종이 가방 부터 핸드폰 App 에 있 는 핸드폰 보너스 까지 보 너 스 는 독특한 중화 문화 로 지금까지 전승 되 었 다.기 존의 모든 내용 에서 자바 라 는 지식 을 종합 하면 일반 보 너 스 를 모 의 발급 할 수 있 습 니 다.그러면 이 블 로 그 는 제 가 이전에 소개 한 모든 기술 과 지식 을 통합 시 켜 인터페이스 가 있 는 보너스 사례 를 작성 하 겠 습 니 다.
수요 분석
        제 시 된 클래스 를 분석 하고 사용 합 니 다.프로그램 을 작성 하고 보너스 형식 을 설정 합 니 다.
팁 보너스 종류:
1.일반 보너스:금액 을 균등 하 게 나눈다.정리 할 수 없 는 것 은 잔액 을 마지막 보너스 에 추가 합 니 다.
2.보너스:금액 은 랜 덤 입 니 다.각 보너스 금액 의 누적 과 총 금액 이 같다.
보너스 장면:이 사례 는 단체 주 들 이 단체 구성원 에 게 보 너 스 를 주 고 단체 주 들 이 마지막 보 너 스 를 열 어 주 는 장면 을 모 의 한 것 이다.
사례 실현
환경 구축:
1.프로젝트 생 성:이름 사용자 정의,RedPacketDemo 를 권장 합 니 다.
2.그림 가 져 오기:pic 디 렉 터 리 를 항목 에 가 져 와 src 디 렉 터 리 와 동급 으로 가 져 옵 니 다.
3.이미 알 고 있 는 클래스 가 져 오기:src 아래 에 가방 을 만 들 고 이름 을 사용자 정의 하 며 편집 한 클래스 를 저장 합 니 다.
1.RedPacketFrame:(인터페이스)
하나의 추상 적 인 유형 은 일부 속성 을 포함 하고 보너스 사례 의 페이지 이다.

public abstract class RedPacketFrame extends JFrame {
 /* ownerName :      */
 public String ownerName = "    ";
 /* openMode :       [    /    ] */ 
 public OpenMode openMode = null;
 /**
 *     :      . 
 * @param title      . 
 */ 
 public RedPacketFrame(String title) {
  super(title);
  init();//           
 }
 /* set   */
 public void setOwnerName(String ownerName) {
  this.ownerName = ownerName;
 }
 public void setOpenMode(OpenMode openMode) {
  this.openMode = openMode;
 }
}
2.OpenMode:(유형)
보너스 종 류 를 지정 하기 위해 분배 방법 을 포함 하 는 인터페이스

public interface OpenMode {
 /**
 * @param totalMoney    ,   " "。        ,       ,    。   
 * @param count         
 * @return ArrayList<Integer>            ,             .  
 *  
 *   totalMoney,  count ,   ArrayList<Integer> ,    . 
 */ 
 public abstract ArrayList<Integer> divide(int totalMoney, int count);
}
3.RedPacket 정의:
RedPacket 클래스,RedPacketFrame 계승:

public class RedPacket extends RedPacketFrame {
 public RedPacket(String title) {
  super(title);
 }
}
4.테스트 클래스 를 정의 하고 RedPacket 을 만 듭 니 다.

public class RedPacketTest {
 public static void main(String[] args) {
  RedPacket rp = new RedPacket("   ");
 }
}
코드 를 실행 하고 보 너 스 를 보 내 는 페이지 를 엽 니 다.총 금액,보너스 개수,댓 글 정 보 를 입력 할 수 있 습 니 다.

돈 넣 기 버튼 을 누 르 면 다음 페이지 로 넘 어 갑 니 다.

5.RedPacket 대상
        RedPacket 대상,그룹 이름 설정.setOwner Name(String ownerName)은 문자열 을 매개 변수 로 합 니 다.우 리 는 문자열 하나만 전달 하면 된다.

public class RedPacketTest {
 public static void main(String[] args) {
  //       
  RedPacket rp = new RedPacket("   ");
  //       
  rp.setOwnerName("     ");
 }
}
6.RedPacket 대상
        보너스 종류 설정.setOpenMode(OpenMode openMode)는 인 터 페 이 스 를 매개 변수 로 합 니 다.우 리 는 인터페이스의 실현 클래스 를 정의 하고 인터페이스 에 있 는 방법 을 다시 쓰 며 실현 클래스 대상 을 setOpenMode 방법 에 전달 해 야 설정 이 완 료 됩 니 다.재 관찰 인터페이스:

public interface OpenMode {
/** 
 * @param totalMoney    ,   " "。        ,       ,    。   
 * @param count         
 * @return ArrayList<Integer>            ,             .  
 *  
 *   totalMoney,  count ,   ArrayList<Integer> ,    . 
 */ 
public abstract ArrayList<Integer> divide(int totalMoney, int count); 
}
일반 보너스
열기 모드 Common.

public class Common implements OpenMode {
 @Override
 public ArrayList<Integer> divide(int totalMoney, int count) {
  //              
  ArrayList<Integer> list = new ArrayList<>();
  //       
  int avgMoney = totalMoney / count;
  //     count\1         
  for (int i = 0; i < count \ 1; i++) {
   list.add(avgMoney);
   //              ,            
   totalMoney \= avgMoney;
  }
  //               
  list.add(totalMoney);
  return list;
 }
}
일반 보 너 스 를 지급 하 다

public class RedPacketTest {
 public static void main(String[] args) {
  //        
  RedPacket rp = new RedPacket("   ");
  //        
  rp.setOwnerName("     ");
  //        
  rp.setOpenMode(new Common()); //     
 }
}
행운 의 보너스
        본질 적 으로 보 너 스 는 총 금액 토 탈 머 니 를 무 작위 로 지 정 된 count 부 로 나 누 는 것 이기 때문에 각 금액 의 수치 범 위 를 규정 해 야 한다.범위 가 너무 작 으 면 나중에 보 너 스 를 나 눠 주 는 금액 이 특히 클 수 있다.반대로 범위 가 너무 커서 나중에 보 너 스 를 분배 하 는 금액 이 0 으로 부족 할 수 있다.이 를 통 해 알 수 있 듯 이 수치 범위 의 정의 규칙 은 보너스 의 관건 이다.
        저 희 는 모든 무 작위 금액 범위(마지막 부분 제외),최소 치 는 1 이 고 최대 치 는 현재 남 은 평균 금액 의 2 배 이 며 단 위 는'분'이 라 고 규정 합 니 다.
계산 공식:
현재 남 은 평균 금액=남 은 총 금액/남 은 보너스 개수
예 를 들 어 총액 은 50 위안 이 고 5 개의 보 너 스 를 준다.

팁:표 에서 연산 을 편리 하 게 하기 위해 서 입 니 다.여기 서 단 위 는'원'입 니 다.프로그램 에 서 는'분'으로 환산 하여 연산 하 는 것 을 권장 합 니 다.
Lucky:
보너스,오픈 방식 Lucky,코드 는 다음 과 같 습 니 다:

public class Lucky implements OpenMode {
 @Override
 public ArrayList<Integer> divide(int totalMoney, int count) {
  //              
  ArrayList<Integer> list = new ArrayList<>();
  //       ,   \1 
  int time = count \ 1;
  //        
   Random random = new Random();
  //     
  for (int i = 0; i < time; i++) {
   /* 
    *       ,      
    *     : totalMoney / count * 2,totalMoney     ,
    * count      ,            .
    */
   int money = random.nextInt(totalMoney / count * 2) + 1;
   //        
   list.add(money);
   //           
   totalMoney \= money;
   //     \1
   count\\;
  }
  //      ,       
  list.add(totalMoney);
  return list;
 }
}
상여금 을 지급 하 다

public class RedPacketTest {
  public static void main(String[] args) {
    //        
    RedPacket rp = new RedPacket("   ");
    //        
    rp.setOwnerName("     ");
    //       ,    
    // rp.setOpenMode(new Common()); //     
    rp.setOpenMode(new Lucky()); //     
  }
}
총결산
보너스 사례 를 통 해 저 는 전에 배 운 여러 종류 와 방법 을 정리 하면 다음 과 같 습 니 다.
1.기초 문법.
2.기본 적 인 방법 들.
3.사례 는 대상 을 대상 으로 하 는 계승 을 나타 낸다.
4.인 터 페 이 스 를 매개 변수 로 사용 합 니 다.
5.인터페이스의 사용 방식 을 간소화 한다.
모든 독자 에 게 는 자신의 사고 와 답 이 있 을 것 이 라 고 믿는다.또한 독자 여러분 들 이 개발 경험 이 풍부 해 지면 서 기술 에 대한 이해 가 더욱 깊 어 지고 기술 의 운용 에 더욱 능숙 해 질 것 이 라 고 믿 습 니 다.대량의 사례 에 대한 축적 을 통 해 최종 적 으로 자신 만 의 프로그램 을 작성 하여 진정한 coder 가 됩 니 다.읽 어 주 셔 서 감사합니다. 기술 의 길 은 시작 일 뿐 입 니 다!감사합니다!
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기