java试题

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

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

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

package com.company;


import java.text.ParseException;
import java.util.Scanner;

public class test02 {
    public static void main(String[] args)  throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入日期:(格式如:**月**日****年)");
        String date = sc.next();
        int m =date.indexOf("");
        int d = date.indexOf("");
        String month = date.substring(0, m);
        String day = date.substring(m+1, d);
        String year = date.substring(d+1,date.length()-1);
        System.out.println(year+""+month+""+day+"");

    }

}

运行结果

请输入日期:(格式如:**月**日****年)
12月22日2019年
2019年12月22日

 
========================================================================

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

package com.company;

import java.util.Scanner;

public class test03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String str =sc.next();
        char[] cs =  str.toCharArray();/*把字符串转为字符数组;*/
        int i = 0;
        int j=  0;
        for (char c: cs){
            if(Character.isDigit(c))/*判断是否为数字*/
                i++;
            else if (Character.isLetter(c))/*判断是否为字母*/
                j++;
        }
        System.out.println("有"+i+"个数字"+j+"个字母");

    }
}

运行结果

请输入一个字符串
sdfsad6fsf685494
有7个数字9个字母

========================================================================

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

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

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

package com.company;

public class test04 {
    public static void main(String[] args) {
        String s = "这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么," +
                "真爱过才会懂,会寂寞会回首,终有梦终有你在心中。  朋友一生一起走," +
                "那些日子不再有,     一 句 话,一辈子,一生情,一杯酒。朋友不曾孤单过," +
                "一声朋友你会懂,还有伤,还有痛,还要走,还有我。";
        String key = "朋友";
        int startLen =  s.length();
        s = s.replace(key,"");
        int endLen = s.length();
        int iCount = (startLen-endLen)/key.length();
        System.out.println(key+"一共出现:"+iCount+"次");
    }
}

运行结果

朋友一共出现:3次


========================================================================

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

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

package com.company;

import java.util.Scanner;

public class test05 {
      static String[] cd ={"性", "色情", "爆炸", "恐怖", "枪", "军火"};
      public static  String filter(String str) {
          for (String s : cd) {
              String x="";
              for (int i = 0; i < s.length(); i++) {
                x+="*";
              }
              if(str.contains(s)){
                  str=str.replace(s,x);
              }
          }
          return str;
      }
    public static void main(String[] args) {
        String s = "我想看恐怖色情电爆炸影" ;
        System.out.println(test05.filter(s));
    }
    }

运行结果

我想看****电**影


========================================================================

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

                                                                      程序运行流程:请输入年份:                  

                       ……                  

                请选择产品类型(1. 台式机 2. 笔记本 3. 其他):                  

                       ……                  

                     生成3位随机数                 

                      最后显示固定资产编号

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

package com.company;
import java.util.Scanner;

public class test06 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = sc.nextInt();
        System.out.println("请选择产品类型(1. 台式机 2. 笔记本 3. 其他)");
        int  day = sc.nextInt();
        int a = (int)(Math.random()*1000);
        System.out.println("产品编号为:" + year + "0" + day +a );

    }
}

运行结果

请输入年份:
2019
请选择产品类型(1. 台式机 2. 笔记本 3. 其他)
2
产品编号为:201902437

========================================================================

6.计算某年、某月、某日和某年、某月、某日之间的天数间隔和周数。

package com.company;

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

/*
 *1 计算某年、某月、某日和某年、某月、某日之间的天数间隔和周数。
 */
public class test07 {
    public static void main(String[] args) throws ParseException {
        System.out.println("请输入第一个日期(yyyy-MM-dd)");
        Scanner c =new Scanner(System.in);
        String str=c.nextLine();
        System.out.println("请输入第二个日期(yyyy-MM-dd)");
        String str1=c.nextLine();


      //把字符串类型解析为Date类型
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
        Date d= sd.parse(str);
        Date d1=sd.parse(str1);
        long l =0;
        if(d.after(d1)){
            l =d.getTime()-d1.getTime();
        }else{
            l=d1.getTime()-d.getTime();
        }


        long a = 1000*60*60*24;//一天的时间
    long day = l/a;
    long week = day/7;
    System.out.println("两个日期相隔"+day+"天");
    System.out.println("相隔"+week+"周");
    }
}

运行结果

请输入第一个日期(yyyy-MM-dd)
2017-5-5
请输入第二个日期(yyyy-MM-dd)
2017-5-25
两个日期相隔20天
相隔2周

第二种

package lianxi;

import java.util.Date;

public class Lx6 {

    public static void main(String[] args) {
//        1.计算某年、某月、某日和某年、某月、某日之间的天数间隔和周数。
        
        
        Date d = new Date(117, 11, 3);
        Date d2 = new Date(110, 1, 3);
        
        long l = Math.abs(d.getTime() - d2.getTime());
        
        System.out.println(l / 86400000);
        System.out.println(l / 86400000 / 7.0);

    }

}

运行结果

2860
408.57142857142856


========================================================================

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

package com.company;

import java.util.GregorianCalendar;

public class test08 {

        public static void main(String[] args) {
            long a=System.currentTimeMillis();
            //系统开始执行的时间(返回以毫秒为单位的当前时间)
            GregorianCalendar g = new GregorianCalendar();
            //GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
            for(int i=2000;i<2100;i++){
                if(g.isLeapYear(i)){//常用方法的判断是不是闰年
                    System.out.println(i+"是闰年");
                }
            }
            long end =System.currentTimeMillis();//系统执行后的时间
            System.out.println("计算机执行的时间是:"+(end-a));
        }

    }

运行结果

2000是闰年
2004是闰年
2008是闰年
2012是闰年
2016是闰年
2020是闰年
2024是闰年
2028是闰年
2032是闰年
2036是闰年
2040是闰年
2044是闰年
2048是闰年
2052是闰年
2056是闰年
2060是闰年
2064是闰年
2068是闰年
2072是闰年
2076是闰年
2080是闰年
2084是闰年
2088是闰年
2092是闰年
2096是闰年
计算机执行的时间是:20



========================================================================

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

package com.company;

import java.util.Scanner;

public class test09 {
    public static void main(String[] args) {
        System.out.println("请输入一串字符串");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        char[] a =str.toCharArray();//把字符串转化为字符数组
        for (char c:a){
            if(Character.isUpperCase(c))//isUpperCase判断是否为大写
                System.out.print(c+"");
        }
        System.out.println();
        for(char c: a){
            if(Character.isLowerCase(c))//isLowerCase判断是否为小写
                System.out.print(c+"");
        }
    }
}

运行结果

adADAS
ADAS
ad


========================================================================


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

package com.company;

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

public class test10 {
    public static void main(String[] args) throws ParseException {
        System.out.println("输入一个日期如:(yyy-MM-dd)");
        Scanner s = new Scanner(System.in);
        String str = s.nextLine();
        SimpleDateFormat sd = new SimpleDateFormat("yyy-MM-dd");
        Date d = sd.parse(str);//将字符串类型的日期转化为Date类型
        Calendar c=Calendar.getInstance();
        c.setTime(d);//使用给定的Date设置此Calendar的时间
        int year=c.get(Calendar.YEAR);
        int yue =c.get(Calendar.MONTH)+1;
        int zhou =c.get(Calendar.DAY_OF_WEEK)-1;
        GregorianCalendar g =new GregorianCalendar();
        if(g.isLeapYear(year)){
            System.out.println(year+"是闰年");
        }else{
            System.out.println(year+"是平年");
        }
        int max =c.getActualMaximum(Calendar.DAY_OF_MONTH);//一个月中最大的天数
        if(zhou==0){
            System.out.println(yue+"月有"+max+"天"+"该日是"+"周日");
        }else{
            System.out.println(yue+"月有"+max+"天"+"该日是"+"周"+zhou);
        }
    }

    }

运行结果:

输入一个日期如:(yyy-MM-dd)
2017-9-10
2017是平年
9月有30天该日是周日

第二种

package lianxi;

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 Lx9 {

    public static void main(String[] args) throws ParseException {

//        4.编写程序,(Scanner)当以年-月-日的格式输入一个日期时,输出其该年是否为闰年,该月有几天,该日是星期几
        Scanner sc = new Scanner(System.in);
        
        System.out.println("请输入:(格式:年-月-日)");
        String s = sc.nextLine();
        
        Date d = new SimpleDateFormat("yyyy-MM-dd").parse(s);
        
        Calendar c = Calendar.getInstance();
        c.setTime(d);
        
        GregorianCalendar gc = new GregorianCalendar();
        
        if (gc.isLeapYear(c.get(Calendar.YEAR))) {
            System.out.println("是闰年");
        }
        
        int max = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        
        System.out.println(max);
                
    }

}


 


========================================================================

原文地址:https://www.cnblogs.com/songhuiqiang/p/10680663.html