import java.util.Scanner;
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_N ? STR_INPUT_N : STR_INPUT_M);
while (true) {
try {
Scanner scanner = new Scanner(System.in);
return scanner.nextInt();
} catch (Exception e) {
printInputHint(type == INPUT_N ? STR_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));
}
}
温馨提示:答案为网友推荐,仅供参考