2013年蓝桥杯JavaA组题4(颠倒的价牌)

题目标题: 颠倒的价牌

小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。其标价都是4位数字(即千元不等)。小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了。

这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元啊!!

当然,多数情况不能倒读,比如,1110 就不能倒过来,因为0不能作为开始数字。

有一天,悲剧终于发生了。某个店员不小心把店里的某两个价格牌给挂倒了。并且这两个价格牌的电视机都卖出去了!

庆幸的是价格出入不大,其中一个价牌赔了2百多,另一个价牌却赚了8百多,综合起来,反而多赚了558元。

请根据这些信息计算:赔钱的那个价牌正确的价格应该是多少?

答案是一个4位的整数,请通过浏览器直接提交该数字。

public class Main04 {

    public static void main(String[] args){
        System.out.println(reverse("1958"));
        // 枚举四位数,简单筛选

        ArrayList<Price> a1 = new ArrayList<Price>();
        ArrayList<Price> a2 = new ArrayList<Price>();
      //创建好两个ArrayList
        for(int i = 1000; i < 10000; i++){
            // 将其颠倒,和原价做差,将赔200多的放入一个集合,将赚800多放入一个集合
           String s = ""+i; 
           //转换成字符串
           
           if (s.contains("3") || s.contains("4") || s.contains("7")) continue; 
           //去掉字符串中的 3,4,7
           
           String re_s = reverse(s);
           //调用reverse 实现反转
          
           int i1 = Integer.parseInt(re_s);
            //将数字字符串转为数字
            
           int plus = i1 - i;
           
           if (plus > -300 && plus < -200) a1.add(new Price(i, plus));
           // 将亏钱的对象放入a1数组中, 包含原本的钱和赚的钱
           if (plus > 800 && plus < 900) a2.add(new Price(i, plus));
           // 将赚钱的对象放入a2数组中, 包含原本的钱和亏的钱
        }
        // 遍历两个集合两两组合、检查是否相加位558
        for(Price p1 : a1){
            for(Price p2 : a2){
                if (p1.plus+p2.plus==558){
                    System.out.println(p1.p + " "+p1.plus);
                    System.out.println(p2.p + " "+p2.plus);
                }
            }
        }
        //输出结果
    }

    // reverse用于反转
    public static String reverse(String s){
        char[] ans = new char[s.length()];
        for(int i = s.length()-1,j=0; i>=0; i--,j++){
            char c = s.charAt(i);
            if(c == '6') ans[j]='9';
            else if (c=='9')ans[j]='6';
            else ans[j]=c;
        }
        return new String(ans);
    }


    // Price 对象,里面有原价和差价的属性
    public static class Price{
        int p; //原价
        int plus; //颠倒价-原价

        public Price(int p, int plus) {
            this.p = p;
            this.plus = plus;
        }
    }




}

细节知识补给

1、转化为整型数字

1)Integer.parseInt(String s) ,代码示例如下:

public class Test {
public static void main(String args[]){

String s = "123";
int num = Integer.parseInt(s);
int sum = num + 100;
System.out.println("Result is: "+sum); // 输出结果为:Result is: 223

}}2)Integer.valueOf(String s),代码示例如下:

public class Test2 {
public static void main(String args[]){

String s = "-100";
int num = Integer.valueOf(s);
int sum = num + 101;
System.out.println("Result is: "+sum); // 输出结果为:Result is: 1

} }

2、转化为浮点型数字

1)Float.parseFloat(String s),代码示例如下:

public class Test {
public static void main(String args[]){

String s = "123.11";

float num = Float.parseFloat(s);
float sum = num + 100;

System.out.println("Result is: "+sum); // 输出结果为:Result is: 223.11

}}2)Double.parseDouble(String s),代码示例如下:

public class Test2 {

public static void main(String args[]){

String s = "100.01";
double num = Double.parseDouble(s);

double sum = num + 100;

System.out.println("Result is: "+sum); // 输出结果为:Result is: 200.01

}}

3、java中整形、浮点类型转化为字符串

public class Test {

public static void main(String args[]){

int i = 11;
String s = i + ""; // 方法一

String s = String.valueOf(i); // 方法二
String s = Integer.toString(i); // 方法三
} }

4、Java中判断字符串是否为数字:

public static boolean isNumeric(String str){
for (int i = str.length();--i>=0;){

if (!Character.isDigit(str.charAt(i))){
return false;
} }

return true;

}

5、java中contains方法是判断是否存在包含关系

java中contains方法是判断是否存在包含关系,比如说a =[1,2,3,4], b=1那么a就包含b

contains返回的是布尔类型truefalse,包含的话就返回true,不包含的话就返回false

public class pratise {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String a = "l love feng ye";
        String b = "love";
        boolean c = a.contains(b);
        System.out.println(a.contains(b));
        //assertEquals(a.contains(b), "true");
    }
}

已标记关键词 清除标记
课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页