2016 ThoughtWorks 校招编程作业

本文介绍了一个Java程序,该程序能够根据输入的时间段、人数等参数计算活动的预期收入和支出,并最终得出收益情况。通过定义不同的收费标准和考虑工作日与周末的差异,程序能够灵活应对各种场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


import java.text.SimpleDateFormat;
import java.util.Calendar;

public class Test {
	public static int dayForWeek(String pTime) throws Exception {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Calendar c = Calendar.getInstance();
		c.setTime(format.parse(pTime));
		int dayForWeek = 0;
		if(c.get(Calendar.DAY_OF_WEEK) == 1){
			dayForWeek = 7;
		}else{
			dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
		}
		return dayForWeek;
	}
	public String generateSummary(String input){
		String[] arr = input.split(" ");
		int peopleNum = Integer.parseInt(arr[2]);
		int yard = 0;
		int T = peopleNum / 6;
		int X = peopleNum % 6;
		if(T == 0 && X < 4){
			yard = 0;
		}else if(T == 0 && X >= 4){
			yard = 1;
		}else if(T == 1){
			yard = 2;
		}else if((T == 2 || T == 3) && X >= 4){
			yard = T + 1;
		}else {
			yard = T;
		}
		
		int weekday = -1;
		try {
			weekday = dayForWeek(arr[0]);
		} catch (Exception e) {
			e.printStackTrace();
		}
		//System.out.println(weekday);
		
		int[][] charge = new int[8][24];
		for(int i = 1; i <= 5; i++){
			charge[i][9] = 30;
			charge[i][10] = 30;
			charge[i][11] = 30;
			charge[i][12] = 50;
			charge[i][13] = 50;
			charge[i][14] = 50;
			charge[i][15] = 50;
			charge[i][16] = 50;
			charge[i][17] = 50;
			charge[i][18] = 80;
			charge[i][19] = 80;
			charge[i][20] = 60;
			charge[i][21] = 60;
		}
		for(int i = 6; i <= 7; i++){
			charge[i][9] = 40;
			charge[i][10] = 40;
			charge[i][11] = 40;
			charge[i][12] = 50;
			charge[i][13] = 50;
			charge[i][14] = 50;
			charge[i][15] = 50;
			charge[i][16] = 50;
			charge[i][17] = 50;
			charge[i][18] = 60;
			charge[i][19] = 60;
			charge[i][20] = 60;
			charge[i][21] = 60;
		}
		int[] timezone = new int[2];
		String[] tempsplit = arr[1].split("~");
		timezone[0] = Integer.parseInt(tempsplit[0].split(":")[0]);
		timezone[1] = Integer.parseInt(tempsplit[1].split(":")[0]);
		//System.out.println(timezone[0]+"--"+timezone[1]);
		int income = peopleNum * 30;
		int outcome = 0;
		for(int i = timezone[0]; i < timezone[1]; i++) {
			outcome += charge[weekday][i];
		}
		outcome *= yard;
		if(yard == 0){
			income = 0;
		}
		char lastchar = ((income - outcome)>0) ? '+' : '-';
		int lastval = Math.abs(income - outcome);
		String output = arr[0] + " " + arr[1] + " " + "+" + income
				+ " " + "-" + outcome + " " + lastchar + lastval;
		System.out.println(output);
		return output;
	}
	
	public static void main(String[] args) {
		Test t = new Test();
		t.generateSummary("2016-06-02 20:00~22:00 7");
	}

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值