Java编程:请看题目,在下面,麻烦给出完整的解答。我是个菜鸟,谢谢

任务二:某通讯公司开展一个活动,电话费每使用M元就可以获赠1元。已知小明的电话费一开始有N元,每天的电话费为1元,小明最多能打多少天的电话?(2 <= M<= N <= 1000)
说明:首先输入一个整数N,代表小明自有的电话费,然后输入一个整数M,代表活动中每使用M元即可获赠1元。请输出小明可以通话的天数。
例如输入:20 5程序需要输出:24
要求:用循环语句实现。

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));
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-02-26
输入n

day = 0;
t=0;
while (n<1) {
n=n-1
t+=1;
if(t==m){
n+=1;
t=0;
}
day +=1;
}
输出 day追问

谢谢,可以完整的代码吗?

追答

Scanner sc = new Scanner(System.in);
System.out.println("分别输入n,m:");
int n = sc.nextInt();
int m = sc.nextInt();
int day = 0;
int t=0;
while (n>=1) {
n=n-1;
t+=1;
if(t==m){
n+=1;
t=0;
}
day +=1;
}
System.out.println(day);
请采纳

本回答被网友采纳
相似回答