Java常用工具类学习

1、编写程序,想想2乘8最简单的方法;

答案:先思考,再看答案

代码:

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


//        移位运算
//        左移n位,相当于乘以2的n次
//        右移n位,相当于除以2的n次,取整
//        2 << 3,
//        因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2 << 3。
        System.out.println("左移");
        System.out.println(2<<3);    //2*2*2*2
        System.out.println(2<<4);    //2*2*2*2*2
        System.out.println(3<<3);    //3*2*2*2
        System.out.println(4<<2);    //4*2*2
        System.out.println(5<<2);    //5*2*2
        System.out.println(6<<2);    //6*2*2
        System.out.println("----------------");
        System.out.println("右移");
        //因为将一个数右移n位,就相当于除以了2的n次方,,当不够除时值为1,且当值为小数点时会向下取整,例如9/2=4.5,但是右移是结果为4
        System.out.println(6>>2);
        System.out.println(6>>1);
        System.out.println(9>>1);
        System.out.println(9>>2);
    }
}
View Code

答案:

//        左移
//        16
//        32
//        24
//        16
//        20
//        24
//        ----------------
//        右移
//        1
//        3
//        4
//        2
View Code

2、请根据控制台输入的特定日期格式拆分日期
           如:请输入一个日期(格式如:**月**日****年)
                  经过处理得到:****年**月**日

答案:代码

Scanner c=new Scanner(System.in);
String date=c.next();
int year,month,day;
year=date.indexOf("年",0);
month=date.indexOf("月",0);
day=date.indexOf("日",0);
String date1=date.substring(day+1,year+1)+date.substring(0,month+1)+date.substring(month+1,day+1);
System.out.println(date1);
View Code

结果:

//输入:12月31日2019年
//输出:2019年12月31日
View Code

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

答案:

public class test3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s1=sc.nextLine();
        int number = 0;
        int English = 0;
        char[] c = s1.toCharArray();
        for (char i: c) {
                if (Character.isDigit(i)){
                    number++;
                }
                if (Character.isLetter(i)){
                    English++;
                }
        }
        System.out.println("数字右"+number+"个。");
        System.out.println("字母有"+English+"个。");
    }
}
View Code

结果:

//输入:gsrgs4654

//输出:
//数字右4个。
//字母有5个。
View Code

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

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

答案:

class Find{
    public static int appearNumber(String S, String Val) {
        int count = 0;
        int index = 0;
        while ((index = S.indexOf(Val, index)) != -1) {   //
            index = index + Val.length();
            count++;
        }
        return count;
    }
}

public class Test4 {
    public static void main(String[] args) {
        String S = "这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。";
        String Val = "朋友";
        Find f = new Find();

        System.out.println(Find.appearNumber(S,Val));

    }
}
View Code

结果:

//3
View Code

5、编写敏感词过滤程序 

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

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

答案:

public class Lx2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s1 = scanner.nextLine();
        String[] s = {"性","色情","爆炸","恐怖","枪","军火","暴力"};
        for (String a: s) {
            String a1 = "";

            if (s1.contains(a)){
                for(int i=0;i<a.length();i++){
                    a1+="*";
                }
                s1=s1.replace(a,a1);
            }
        }
        System.out.println(s1);
    }
}


//不要谈性色变,不要接触色情,更不要动枪和军火,这很恐怖,会爆炸,还很暴力。
//不要谈*色变,不要接触**,更不要动*和**,这很**,会**,还很**。
View Code

6、根据输入的年份、产品类型和随机数产生固定资产编号

即:固定资产编号=年份+0+产品类型+3位随机数

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

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

答案:

import java.util.Scanner;

public class chan_pinbianhao {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入年份:");
        String s = scanner.nextLine();

        System.out.println("请选择产品类型(1. 台式机 2. 笔记本 3. 其他)");
        int i = scanner.nextInt();
         int random = (int)(Math.random()*1000);

        System.out.println(s+0+i+random);
    }
}
View Code

结果:

请输入年份:
1999     //输入
请选择产品类型(1. 台式机 2. 笔记本 3. 其他)
3          //输入
199903936
View Code

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

答案:

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

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

        long startTime = System.currentTimeMillis(); //获取开始时间
        int j = 0;
        for (int i = 2000; i <= 2100; i++) {
            if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
                System.out.println("21世纪的闰年为:" + i);
                j++;
            }
        }
        System.out.println("21世纪共有" + j + "年闰年");

        long endTime = System.currentTimeMillis(); //获取结束时间

        System.out.println("程序运行时间:" + (endTime - startTime) + "ms"); //输出程序运行时间
    }
}
View Code

结果:

//        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
//
//        21世纪共有25年闰年
//
//        程序运行时间:43ms
View Code

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

答案:

package normal_toolclass;

import java.util.Scanner;

public class test3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入含有大小写字母的字符串,例如:AAAaaa");
       
        String s1 = sc.nextLine();
        
        int upper = 0;
        int lower = 0;
        char[] c = s1.toCharArray();
        
        System.out.println("大写字母为:");
        for (char i : c) {
            if (Character.isUpperCase(i)) {
                System.out.print(i + " ");
                upper++;
            }
        }
        
        System.out.println();
        
        System.out.println("小写字母为: ");
        for (char i : c) {

            if (Character.isLowerCase(i)) {
                System.out.print(i + " ");
                lower++;
            }
        }
        System.out.println();
        System.out.println("大写字母共" + upper + "个。");
        System.out.println("小写字母共" + lower + "个。");
    }
}
View Code

结果:

//请输入含有大小写字母的字符串,例如:AAAaaa
//AAAAaaaa       //输入
//大写字母为:
//A A A A 
//小写字母为: 
//a a a a 
//大写字母共4个。
//小写字母共4个。
View Code

9、编写程序,(Scanner)当以年-月-日的格式输入一个日期时,输出其该年是否为闰年,该月有几天,该日是星期几。

package jichu;

//9.编写程序,(Scanner)当以年-月-日的格式输入一个日期时,输出其该年是否为闰年,该月有几天,该日是星期几

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;



public class IdCalendar {
    public static void main(String[] args) throws ParseException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个日期:(例:1999年1月1日)");
        String str =scanner.nextLine();

        SimpleDateFormat sd = new SimpleDateFormat("yyyy年MM月dd日");    //SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
        Date indate = sd.parse(str);           //parse()是SimpleDateFomat里面的方法,将字符串转化为日期
        //System.out.println(str);

        Calendar calendar  = Calendar.getInstance();//使用默认时区和区域设置获取时间getInstance()使用默认时区和语言环境获得一个日历
        calendar.setTime(indate);//setTime(Date date)使用给定的 Date 设置此 Calendar 的时间。
        int year = calendar.get(Calendar.YEAR);  //年份
        int days_of_month = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);  //该月的天数
        int day_of_week =calendar.get(Calendar.DAY_OF_WEEK);  //指示一个星期中的某天。

        if (calendar.get(Calendar.DAY_OF_WEEK) == 1) //1代表周日 7代表周六 2代表周一
            day_of_week = 7;
        else
            day_of_week --;

        //GregorianCalendar gregorianCalendar = new GregorianCalendar();  //GregorianCalendar 是Calender的子类
        //if (gregorianCalendar.isLeapYear(year))
        if((year% 4 == 0 && year % 100 != 0) || year % 400 == 0)
            System.out.println(year+" 年是闰年");
        else
            System.out.println(year+" 年是平年");

        System.out.println("该年"+ (calendar.get(Calendar.MONTH)+1) +"月有" +days_of_month+"天");
        System.out.println("这天是这周的第"+day_of_week+"天");
    }
}
View Code

结果:

//请输入一个日期:(例:1999年1月1日)
//2019年4月25日
//2019 年是平年
//该年4月有30天
//这天是这周的第4天
View Code

 

转载于:https://www.cnblogs.com/LOL-toulan/p/10767829.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值