3.26周报

                                            周报

代码行数:

周一

581

周二

601

周三

615

周四

591

周五

570

周六

561

周日

577

遇到的问题:

项目启动很慢,要将近5分钟才能开启项目,对开发造成很大困扰。

断点打在奇怪的地方,造成启动缓慢。断点静音后项目恢复正常。

判断字符串是否包含某个字符:str.contains(“@”);

判断字符串是否完全由数字构成:org.apache.commons.lang3.StringUtils提供了丰富的字符串解析的工具包,其中isNumeric(String Str)就是提供解析是否为数字类型的方法。

StringUtils.isNumeric(str);

源代码:

public static boolean isNumeric(final CharSequence cs) {
        // 判断是否为空,如果为空则返回false
        if (isEmpty(cs)) {
            return false;
        }
        // 通过 length() 方法计算cs传入进来的字符串的长度,并将字符串长度存放到sz中
        final int sz = cs.length();
        // 通过字符串长度循环
        for (int i = 0; i < sz; i++) {
            // 判断每一个字符是否为数字,如果其中有一个字符不满足,则返回false
            if (!Character.isDigit(cs.charAt(i))) {
                return false;
            }
        }
        // 验证全部通过则返回true
        return true;
    }
字符串最后一位是不是空格

endsWith(“ ”)
 

算法题:

问题描述
小蓝要把一个字符串中的字母按其在字母表中的顺序排列。

例如,LANQIAO 排列后为 AAILNOQ。

又如,GOODGOODSTUDYDAYDAYUP 排列后为 AADDDDDGGOOOOPSTUUYYY。

请问对于以下字符串,排列之后字符串是什么?

WHERETHEREISAWILLTHEREISAWAY

import java.util.Arrays;
 
public class Main {
    public static void main(String[] args) {
        String arr = "WHERETHEREISAWILLTHEREISAWAY";
        char arr1[] = arr.toCharArray();//将字符串转为数组
        Arrays.sort(arr1);//数组排序
        for(int i = 0; i < arr1.length; i++) {
            System.out.print(arr1[i]);
        }
    }

比较Date大小
dates[i].compareTo(dates[j]) > 0
小 -1,等 0,大 1

String->Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date datr=sdf.parse(str);

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

X 星球的一处迷宫游乐场建在某个小山坡上。它是由 10×1010×10 相互连通的小房间组成的。

房间的地板上写着一个很大的字母。我们假设玩家是面朝上坡的方向站立,则:

�L 表示走到左边的房间,
�R 表示走到右边的房间,
�U 表示走到上坡方向的房间,
�D 表示走到下坡方向的房间。
X 星球的居民有点懒,不愿意费力思考。他们更喜欢玩运气类的游戏。这个游戏也是如此!

开始的时候,直升机把 100100 名玩家放入一个个小房间内。玩家一定要按照地上的字母移动。

迷宫地图如下:

UDDLUULRUL
UURLLLRRRU
RRUURLDLRD
RUDDDDUUUU
URUDLLRRUU
DURLRLDLRL
ULLURLLRDU
RDLULLRDDD
UUDDUDUDLL
ULRDLUURRR

请你计算一下,最后,有多少玩家会走出迷宫,而不是在里边兜圈子?

如果你还没明白游戏规则,可以参看下面一个简化的 4x4 迷宫的解说图:

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
 
public class Main {
  static char[][] arr;
  static int[][] vis;
  static int ans=0;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        arr=new char[10][10];
        for(int i = 0;i<arr.length;i++) {
            String s = scan.next();
            arr[i] = s.toCharArray();
        }
        for(int i=0;i<arr.length;i++){
            for(int j = 0;j<arr[0].length;j++) {
 
          vis=new int[10][10];
          dfs(i,j);
        }}
        System.out.println(22);
        scan.close();
    }
    public static void dfs(int x,int y){
      if(x<=-1||y>=10||y<=-1||x>=10){
        ans++;
        return;
      }
      if(vis[y][x]==1){
        return;
      }
      vis[y][x]=1;
      if(arr[y][x]=='U'){
        dfs(x,y-1);
      }
            if(arr[y][x]=='D'){
        dfs(x,y+1);
      }
            if(arr[y][x]=='L'){
        dfs(x-1,y);
      }
            if(arr[y][x]=='R'){
        dfs(x+1,y-1);
      }
    }
}

日期问题
题目描述
小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。

更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。

比如 02/03/04,可能是 2002 年 03 月 04 日、2004 年 02 月 03 日或 2004 年 03 月 02 日。

给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?

输入输出样例
示例

输入

02/03/04
输出

2002-03-04
2004-02-03
2004-03-02
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
 
public class RiQiWenTi {
    public static void main(String[] args) throws ParseException {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        String d = scan.nextLine();
        String[] strs = d.split("/");
        Integer[] integers = new Integer[3];
        for (int i = 0; i < 3; i++) {
            integers[i] = Integer.valueOf(strs[i]);
        }
        String[] s012 = new String[3];
        Integer[] i012 = new Integer[3];
        s012[0] = strs[0];
        s012[1] = strs[1];
        s012[2] = strs[2];
        i012[0] = integers[0];
        i012[1] = integers[1];
        i012[2] = integers[2];
        String[] s201 = new String[3];
        Integer[] i201 = new Integer[3];
        s201[0] = strs[2];
        s201[1] = strs[0];
        s201[2] = strs[1];
        i201[0] = integers[2];
        i201[1] = integers[0];
        i201[2] = integers[1];
        String[] s210 = new String[3];
        Integer[] i210 = new Integer[3];
        s210[0] = strs[2];
        s210[1] = strs[1];
        s210[2] = strs[0];
        i210[0] = integers[2];
        i210[1] = integers[1];
        i210[2] = integers[0];
        String pd1 = panduan(s012, i012);
        String pd2 = panduan(s210, i210);
        String pd3 = panduan(s201, i201);
        String[] strings = new String[4];
        strings[0] = pd1;
        strings[1] = pd2;
        strings[2] = pd3;
        Date[] dates = new Date[4];
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        if (pd1 != null) {
            dates[0] = sdf.parse(pd1);
        }
        if (pd2 != null) {
            dates[1] = sdf.parse(pd2);
        }
        if (pd3 != null) {
            dates[2] = sdf.parse(pd3);
        }
        for (int i = 0; i < 3; i++) {
            for (int j = i + 1; j < 3; j++) {
                if (dates[i] == null || dates[j] == null) {
                } else {
                    if (dates[i].compareTo(dates[j]) > 0) {
                        dates[3] = dates[i];
                        dates[i] = dates[j];
                        dates[j] = dates[3];
                        strings[3] = strings[i];
                        strings[i] = strings[j];
                        strings[j] = strings[3];
                    }else if (dates[i].compareTo(dates[j])==0){
                        strings[j]=null;
                    }
                }
            }
        }
        if (strings[0] != null) {
            System.out.println(strings[0]);
        }
        if (strings[1] != null) {
            System.out.println(strings[1]);
        }
        if (strings[2] != null) {
            System.out.println(strings[2]);
        }
        scan.close();
    }
 
    public static String panduan(String[] strings, Integer[] integers) {
        int[] max_days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        int[] Rmax_days = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (integers[0] % 4 == 0) {
            if (integers[1] <= 12 && integers[1] > 0 && integers[2] > 0 && integers[2] <= Rmax_days[integers[1]]) {
                if (integers[0] < 60) {
                    return ("20" + strings[0] + "-" + strings[1] + "-" + strings[2]);
 
                } else {
                    return ("19" + strings[0] + "-" + strings[1] + "-" + strings[2]);
                }
            }
        } else {
            if (integers[1] <= 12 && integers[1] > 0 && integers[2] > 0 && integers[2] <= max_days[integers[1]]) {
                if (integers[0] < 60) {
                    return ("20" + strings[0] + "-" + strings[1] + "-" + strings[2]);
                } else {
                    return ("19" + strings[0] + "-" + strings[1] + "-" + strings[2]);
                }
            }
        }
        return null;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值