class?Test?{
public?static?final?String?STR_INPUT_N?=?"請輸入小明的自有話費(整數),N:";
public?static?final?String?STR_INPUT_M?=?"請輸入每使用多少元就可以獲贈1元,M:";
public?static?final?String?STR_INPUT_N_AGAIN?=?"請再次輸入小明的自有話費N,註意是整數:";
public?static?final?String?STR_INPUT_M_AGAIN?=?"請再次輸入每使用多少元就可以獲贈1元,M,註意是整數:";
/**
*?當前正在輸入M */public?static?final?int?INPUT_M?=?0;
/**
*?當前正在輸入N */public?static?final?int?INPUT_N?=?1;
/**
*?某通訊公司開展壹個活動,電話費每使用M元就可以獲贈1元。已知小明的電話費壹開始有N元,每天的電話費為1元,小明最多能打多少天的電話?(2?<=?M<=?N?<=?1000) *?說明:首先輸入壹個整數N,代表小明自有的電話費,然後輸入壹個整數M,代表活動中每使用M元即可獲贈1元。請輸出小明可以通話的天數。 *?例如輸入:20?5程序需要輸出:24 *?要求:用循環語句實現。 */public?static?void?main(String?args[])?{
int?phoneCharge?=?getLeftCharge(INPUT_N);
int?discounts?=?getLeftCharge(INPUT_M);
if?(phoneCharge?>=?discounts)?{
//計算可多獲得的收益
printResult(phoneCharge?/?discounts?+?phoneCharge);
}?else?{
printResult(phoneCharge);
}
}
/**
*?獲取當前輸入的現金,如果輸入的不是整數,要求重新輸入 * *?@param?type?輸入的類型?{@link?#INPUT_N};?{@link?#INPUT_M} *?@return?話費 */private?static?int?getLeftCharge(int?type)?{
printInputHint(type?==?INPUT_NSTR_INPUT_N?:?STR_INPUT_M);
while?(true)?{
try?{
Scanner?scanner?=?new?Scanner(System.in);
return?scanner.nextInt();
}?catch?(Exception?e)?{
printInputHint(type?==?INPUT_NSTR_INPUT_N_AGAIN?:?STR_INPUT_M_AGAIN);
}
}
}
/**
*?打印輸入提示語 *?@param?type */private?static?void?printInputHint(String?type)?{
System.out.println(type);
}
/**
*?打印計算的結果 *?@param?result */private?static?void?printResult(int?result)?{
System.out.println(String.format("小明可以通話的天數:%d",result));
}
}