公交卡充值问题?

问题描述

小明去公交卡充值中心为自己的公交卡充值,公交充值中心搞了一个充值优惠活动,活动详情如下:
(1)充值200元~299元,赠送50元余额到卡中;
(2)充值300元~499元,赠送100元余额到卡中;
(3)充值500元及500元以上,赠送200元余额到卡中;
(4)充值200元以下,则没有赠送活动;
比如:小明如果充值350元,那么实际卡中到账的金额将会是450元(350元充值 + 100元赠送)。
请编程帮助公交卡充值中心,根据客户的充值金额,计算实际应当到账的金额?

问题出现的平台版本及自己尝试过哪些方法

忽略了200以下充值金额没有赠送活动,只输出充值数;以及充值的大范围没有考虑进去。

相关代码

粘贴代码文本(请勿用截图)
import java.util.Scanner;
public class Main {

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    if(n>=1 && n<=999){
        if(n>=200 && n<=299)
            System.out.println(n+50);
        else if(n>=300 && n<=499)
            System.out.println(n+100);
        else if(n>=500)
            System.out.println(n+200);
        else
            System.out.println(n);
    }
}

}

你期待的结果是什么?实际看到的错误信息又是什么?

小组讨论,已经解决此问题。

阅读 1.7k
avatarAI BotBETA

公交卡充值问题

问题描述

小明去公交卡充值中心为自己的公交卡充值,公交充值中心搞了一个充值优惠活动,活动详情如下:

  1. 充值200元~299元,赠送50元余额到卡中;
  2. 充值300元~499元,赠送100元余额到卡中;
  3. 充值500元及500元以上,赠送200元余额到卡中;
  4. 充值200元以下,则没有赠送活动;

比如:小明如果充值350元,那么实际卡中到账的金额将会是450元(350元充值 + 100元赠送)。

问题出现的平台版本及自己尝试过哪些方法

忽略了200以下充值金额没有赠送活动,只输出充值数;以及充值的大范围没有考虑进去。

相关代码

以下是相关代码。

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if(n>=1 && n<=999){
            if(n>=200 && n<=299)
                System.out.println(n+50);
            else if(n>=300 && n<=499)
                System.out.println(n+100);
            else if(n>=500)
                System.out.println(n+200);
            else
                System.out.println(n);
        }
    }
}

期待的结果和实际看到的错误信息是什么?

期待的结果是:根据客户充值的金额,正确计算出实际到账的金额。

实际看到的错误信息可能是:当输入的金额超出规定的范围时(例如:大于999元或小于1元),没有做相应的处理。

2 个回答
✓ 已被采纳
public static void main(String[] args) {

        //配置
        int[] nums = {500, 300, 200, 0};
        int[] price = {200, 100, 50, 0};

        //输入
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();

        //极值判断
        if (n < 0 || n >= Integer.MAX_VALUE) {
            System.out.println("请输入有效的充值金额!");
            return;
        }

        //区间判断
        for (int i = 0; i < nums.length; i++) {
            if (n >= nums[i]) {
                System.out.println(n + price[i]);
                break;
            }
        }

        
    }

换一种写法 上面有注释 相信题主能看懂

import java.util.Scanner;

public class Main {

    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        if(n <= 0) {
            System.out.println("请输入有效的充值金额!");
            return;
        }

        if(n < 200) {
            System.out.println(n);
        } else if(n >= 200 && n <= 299) {
            System.out.println(n + 50);
        } else if(n >= 300 && n <= 499) {
            System.out.println(n + 100);
        } else { // n >= 500
            System.out.println(n + 200);
        }
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题