python题目用java解决,并聊一聊java如何学习

由于没能在规定时间把题目做出来,找了一下这道题,百度到的题目内容和数据来源,也顺便插个眼,有时间的时候玩下其他题目:

研发工程师-编程题(python)_Le_ander的博客-CSDN博客

研发工程师L1Python学习 | 程序员灯塔 (wangt.cc)

python编程考试题目大全_彭_江南的博客-CSDN博客_python编程题

LeetCode,这个神奇的网站听是听过,但本人还是第一次进入,发现也有我做过的题目

292. Nim 游戏 - 力扣(LeetCode)

没到过培训网站学习,本人基础理论类的学习都是用pdf类的电子书,实战一般都是看b站视频,最屌也就上github看下源码了,这是经过实践后慢慢形成发现的最高效的学习方法。以前刚开始工作就停留在用,因为需求都非常紧急,边学边用,要实现的功能非常多,所以没时间深究,写完代码一段时间后就忘得差不多了,后来换了公司才有时间沉淀一下技术,并形成了这个学习方法。推荐一下给有缘人,也许可以让你少走弯路。源码啥的还是先少看,先把java常用的基础学得差不多再看(技术是学不完的,常用基础是有限的),一般我去github都是拉某个技术的源码微改以适应项目或者查一些百度不到的bug。我的技术也是不到家的,java也3年了,19年毕业的我为啥才3年,刚毕业那会家人让考公和自由创业去了,故事很多就不说了。我是直接跳过实习工作的(大学毕业那个学期估计大家都在做苦哈哈的实习生吧,哈哈),还有可能是我比较灵活的原因,工作中基本没遇到过什么困难,我要去实现的基本通过各种技术都能有办法实现,没学过的技术马上看下然后就实战,就这么过来了。学习也聊完了,推荐两本干货pdf给java新手上路(自行网上寻找):

Java核心技术·卷 I(原书第11版) .pdf

Java核心技术·卷 II (原书第11版).pdf

还有就是给大学生一个建议,坚持养成习惯是很重要的,其实高考过后大家都会明白,能上好学校的学生基本都是非常自律或者被家长逼着自律的(我是被放养的),而当自律成为习惯的时候就很恐怖了。博主是有深切体悟的,以前读初高中,我是一努力就成绩往上飙,但后来都坚持不住摆烂了,3分钟热度,成绩又开始往下掉,掉到平稳在哪就没感觉了。我弟弟也是,他数学很差,及格不了那种,我逼着他疯狂学了一段时间数学,中考116差4分满分(绝对真实,我是个弟控,哈哈),主要自己是过来人,不想他以后高考后悔(现在学历贬值得厉害,没工作经验难找工作)。我认为教会后代学会自律和养成习惯去主动学习比监督及讲解知识重要,不可能帮他一辈子。人都是(脑子:我知道了),身体却很诚实的,知道和做到是世界上最远的距离,做到知行合一是终极目标,一天改变一点,你我共勉。

good,进入正题:

找到的题目基本都是python版本,还发现了我找的题目基本都来源于python经典题目,本人没学过python,发现没有java版本的又需要java实现,唯一找到的实现也是新建实体类啥的非常复杂,在考试中肯定不可能有这么多时间,决定自己手码一下,题目如下:

某公司要针对员工情况统一调薪,现有一个员工列表,包含姓名、职级、工作年限、工资信息。现要求将该列表按以下规则重新排序:

1、职级高的排在前面

2、若职级相同,按工资少的排前面

3、若工资相同,工作年限长的排前面

输入描述:
第一行输入一个整数n,表示员工列表中员工的人数

接下来的n行,分别输入员工的姓名、职级、工作年限和工资信息,各项信息用空格分隔

输出描述:
输出按要求重新排列的员工列表,每名员工信息(姓名、职级、工作年限和工资)占一行

示例
示例1
输入
6
张三 3 3 3000
李四 3 4 3000
王五 3 3 4000
赵六 4 3 3000
陆奇 4 4 4000
闫八 4 4 3980.99
输出
赵六 4 3 3000.00
闫八 4 4 3980.99
陆奇 4 4 4000.00
李四 3 4 3000.00
张三 3 3 3000.00
王五 3 3 4000.00

package cn.lcj.example;

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String[][] list = new String[n][4];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 4; j++) {
                list[i][j] = in.next();
                /*if (j == 3) {
                    list[i][j] = String.format("%.2f", Double.parseDouble(list[i][3]));
                }*/
            }
        }

        Arrays.sort(list, new Comparator() {// 该接口的compare方法,默认为从小到大排序
            //  重写该方法
            @Override
            public int compare(String[] e1, String[] e2) {// 返回值大于0会交换以实现升降序排列
                // 如果第二列元素相等,比较第四列元素,如果第四列元素相等,比较第二列
                if (e1[1].equals(e2[1])) {
                    if (e1[3].equals(e2[3])) {
                        return e2[2].compareTo(e1[2]);// 降序
                    }
                    return e1[3].compareTo(e2[3]);// 升序
                }
                return e2[1].compareTo(e1[1]);// 降序
            }
        });

        /*for (String[] e : list) {
            String str = Arrays.toString(e);
            System.out.println(str.substring(1, str.length() - 1).replaceAll(",", ""));
        }*/

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(list[i][j] + " ");
            }
            System.out.printf("%.2f%n", Double.parseDouble(list[i][3]));
        }
    }
}

/* 测试数据
示例1
输入
6
张三 3 3 3000
李四 3 4 3000
王五 3 3 4000
赵六 4 3 3000
陆奇 4 4 4000
闫八 4 4 3980.99
应输出
赵六 4 3 3000.00
闫八 4 4 3980.99
陆奇 4 4 4000.00
李四 3 4 3000.00
张三 3 3 3000.00
王五 3 3 4000.00
*/

python题目用java解决,并聊一聊java如何学习_第1张图片

 

 

你可能感兴趣的:(java,排序算法,java,学习方法)