Java工具类练习题和答案

1.请根据控制台输入的特定日期格式拆分日期

如:请输入一个日期(格式如:**月**日****年)
经过处理得到:****年**月**日

提示:使用String的方法indexOf、lastIndexOf、substring

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.my.work;
 
import java.util.Scanner;
 
public class Date_1 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
 
        System.out.println("请输入一个日期(格式如:**月**日****年)");
        String date = s.nextLine();
        System.out.println(date);
 
        int day = date.indexOf("日");//返回“日”的索引值
        String year = date.substring(day+1);//截取****年
        String date2 = date.substring(0,day+1);//截取**月**日
 
        String date3 = year+date2;
        System.out.println(date3);
 
 
    }
 
}

 

  

1
2
3
4
5
6
运行结果:
 
请输入一个日期(格式如:**月**日****年)
4112019
4112019
2019411

 

2.给出一个随机字符串,判断有多少字母?多少数字?

方法一

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Work_2 {
    public static void main(String[] args) {
        int shuzi=0;
        int zimu=0;
        Scanner s = new Scanner(System.in);
        System.out.println("输入随机字符串:");
        String s1 = s.nextLine();
 
        char[] c = s1.toCharArray();
 
        for(int i=0;i<c.length;i++){
            if(c[i]>='0'&&c[i]<='9'){
                shuzi++;
            }else if(c[i]>='a'&&c[i]<='z'||c[i]>='A'&&c[i]<='Z'){
                zimu++;
            }
        }
 
        System.out.println("数字有"+shuzi+"个");
        System.out.println("字母有"+zimu+"个");
    }
}

 

  

1
2
3
4
5
6
运行结果:
 
输入随机字符串:
Zhang110Yuxian
数字有3
字母有11

  

方法二

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.my.work;
 
import java.util.Scanner;
 
public class Work_2_2 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入随机字符串");
        String s1 = s.nextLine();
        int num=0;//数字
        int zm=0;//字母
 
        char[] c = s1.toCharArray();
 
        for(char c1:c){
            if(Character.isDigit(c1)){
                num++;//数字
            }else if (Character.isLetter(c1)){
                zm++;//字母
            }
        }
        System.out.println("数字的个数:"+num+" "+"字母的个数:"+zm);
    }
}

 

  

1
2
3
请输入随机字符串
Zhang110Yuxian000
数字的个数:6 字母的个数:11

  

3.以下是一段歌词,请从这段歌词中统计出朋友出现的次数。

"这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。
朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。";

提示:使用String方法indexOf、substring。

 

 

 

 

方法一

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.my.work;
 
public class Work_3 {
    public static void main(String[] args) {
        String s = "这些年一个人,风也过,雨也走,有过泪,有过错,"+
                   " 还记得坚持甚么,真爱过才会懂,会寂寞会回首," +
                   "终有梦终有你在心中。朋友一生一起走,那些日子不再有," +
                   "一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂," +
                   "还有伤,还有痛,还要走,还有我。";
        int num=0;
        getNumber(s,num);
 
    }
 
    public static void getNumber(String s,int num){
        int n = s.indexOf("朋友");
        if(n>=0){
            num++;
            s=s.substring(n+2);
            getNumber(s,num);
        }else{
            System.out.println("朋友出现的次数:"+num+"次");
        }
    }
}

 

  

1
2
3
运行结果:
 
朋友出现的次数:3

  

方法二

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package com.my.work;
 
public class Work_3_1 {
 
    public static void main(String[] args) {
 
        String s = "这些年一个人,风也过,雨也走,有过泪,有过错,"+
                " 还记得坚持甚么,真爱过才会懂,会寂寞会回首," +
                "终有梦终有你在心中。朋友一生一起走,那些日子不再有," +
                "一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂," +
                "还有伤,还有痛,还要走,还有我。";
    int i = s.indexOf("朋友");
    String s1= s;
    int num=0;
 
    for (int j=0;j<s.length();j++){
            if(i>0){
                num++;
                s1=s1.substring(i+1);
                i=s1.indexOf("朋友");
            }
      }
        System.out.println("朋友的次数:"+num--+"次");
 
    }
 
}

 

  

1
2
3
运行结果:
 
朋友的次数:3

  

方法三

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.my.work;
 
public class Work_3_2 {
    public static void main(String[] args) {
        String s = "这些年一个人,风也过,雨也走,有过泪,有过错,"+
                " 还记得坚持甚么,真爱过才会懂,会寂寞会回首," +
                "终有梦终有你在心中。朋友一生一起走,那些日子不再有," +
                "一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂," +
                "还有伤,还有痛,还要走,还有我。";
 
 
        String[] s1 = s.split("朋友");
        System.out.println("朋友出现的次数:"+(s1.length-1)+"次");
 
    }
}

 

  

1
2
3
运行结果:
 
朋友出现的次数:3

  

方法四

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.my.work;
 
public class Work_3_4 {
    public static void main(String[] args) {
        String s = "这些年一个人,风也过,雨也走,有过泪,有过错,"+
                " 还记得坚持甚么,真爱过才会懂,会寂寞会回首," +
                "终有梦终有你在心中。朋友一生一起走,那些日子不再有," +
                "一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂," +
                "还有伤,还有痛,还要走,还有我。";
 
        String key ="朋友";
 
        int start = s.length();
        String s1 = s.replace(key,"");
        int end = s1.length();
        int count = (start-end)/key.length();
        System.out.println(key+"出现的次数为:"+count+"次");
 
    }
}

 

  

1
2
3
运行结果:
 
朋友出现的次数为:3

  

4.编写敏感词过滤程序
说明:在网络程序中,如聊天室、聊天软件等,经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。如“性”、“色情”、“爆炸”、“恐怖”、“枪”、“军火”等,这些都不可以在网上进行传播,需要过滤掉或者用其他词语替换掉。

提示:将用户的聊天内容保存到一个字符串对象或一个StringBuilder对象中,然后与敏感词语类表(数组实现)进行比对。如果属于敏感词语,就过滤掉或替换掉。

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.my.work;
 
import java.util.Scanner;
 
public class Work_4 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String[] s1 = {"性","色情","爆炸","恐怖","枪","军火"};
        System.out.println("输入一句话:");
        String  s2= s.nextLine();
 
        for (String a:s1){
            String a1 = "";
 
            if(s2.contains(a)){
                for(int i=0;i<a.length();i++){
                    a1+="*";
                }
                s2=s2.replace(a,a1);
            }
 
        }
        System.out.println(s2);
    }
}

  

1
2
3
4
5
运行结果:
 
输入一句话:
不要谈性色变,不要接触色情,更不要动枪和军火,这很恐怖,会爆炸
不要谈*色变,不要接触**,更不要动*和**,这很**,会**

  

5.根据输入的年份、产品类型和随机数产生固定资产编号
即:固定资产编号=年份+0+产品类型+3位随机数

程序运行流程:请输入年份:
……
请选择产品类型(1. 台式机 2. 笔记本 3. 其他):
……
生成3位随机数
最后显示固定资产编号

提示:3位随机数按如下方法产生:
(int)(Math.random()*1000);

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.my.work;
 
import java.util.Scanner;
 
public class Work_5 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输入年份:");
        String year = s.nextLine();
 
        System.out.println("请选择产品类型:(1.台式机  2.笔记本  3.其他)");
        String[] s1 = {"台式机","笔记本","其他"};
 
        Scanner s2 = new Scanner(System.in);
        System.out.println("请选择产品类型");
        int choose = s2.nextInt();
        choose -=1;
        int num = (int)(Math.random()*1000);
 
        System.out.println(year+s1[choose]+num);
    }
}

 

  

1
2
3
4
5
6
请输入年份:
2019
请选择产品类型:(1.台式机  2.笔记本  3.其他)
请选择产品类型
2
2019笔记本606

  

7.计算并输出21世纪的闰年,计算程序的执行时间。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package com.my.work;
 
public class Work_7 {
    public static void main(String[] args) {
 
        long start = System.currentTimeMillis();
        for (int i=2000;i<2100;i++){
            if(i%4==0){
                System.out.println("21世纪所有的闰年:"+i);
            }
        }
        long end = System.currentTimeMillis();
        long run = end-start;
        System.out.println("程序运行时间为:"+run+"毫秒");
    }
 
}

 

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
运行结果:
 
21世纪所有的闰年:2000
21世纪所有的闰年:2004
21世纪所有的闰年:2008
21世纪所有的闰年:2012
21世纪所有的闰年:2016
21世纪所有的闰年:2020
21世纪所有的闰年:2024
21世纪所有的闰年:2028
21世纪所有的闰年:2032
21世纪所有的闰年:2036
21世纪所有的闰年:2040
21世纪所有的闰年:2044
21世纪所有的闰年:2048
21世纪所有的闰年:2052
21世纪所有的闰年:2056
21世纪所有的闰年:2060
21世纪所有的闰年:2064
21世纪所有的闰年:2068
21世纪所有的闰年:2072
21世纪所有的闰年:2076
21世纪所有的闰年:2080
21世纪所有的闰年:2084
21世纪所有的闰年:2088
21世纪所有的闰年:2092
21世纪所有的闰年:2096
程序运行时间为:1毫秒

  

8.编写一个程序,设定一个有大小写字母的字符串,先将字符串的大写字符输出,再将字符串中的小写字符输出。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.my.work;
 
import java.util.Scanner;
 
public class Work_8 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("请输出一串大小写字母");
        String s1 = s.nextLine();
 
        char[] c = s1.toCharArray();
        for (char c1:c){
            if (Character.isUpperCase(c1)){
                System.out.print(c1+" ");
            }
        }
        System.out.println();
        for (char c1:c){
            if (Character.isLowerCase(c1)){
                System.out.print(c1+" ");
            }
        }
     }
}

 

  

1
2
3
4
请输出一串大小写字母
ZhangYuxian
Z Y
h a n g u x i a n

  

 

posted @   泰斗贤若如  阅读(1052)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示