1.请根据控制台输入的特定日期格式拆分日期
如:请输入一个日期(格式如:月日****年) 经过处理得到:****年月日
提示:使用String的方法indexOf、lastIndexOf、substring
import java.util.Scanner;
提示:使用String的方法
indexOf返回指定字符第一次出现的字符串内的索引、
lastIndexOf返回指定字符的最后一次出现的字符串中的索引、
substring返回一个字符串,该字符串是此字符串的子字符串*/
public class Lx1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入一个日期(格式如:月日年):");
String str=sc.next();
int beginIndex=str.indexOf(“日”)+1;
int endIndex=str.lastIndexOf(“年”)+1;
String s=str.substring(beginIndex, endIndex);//提取年
beginIndex=0;
endIndex=str.length();
str=s.concat(str);//把 年 放前边
str=str.substring(beginIndex, endIndex);//提取年月日
System.out.println(str);
}
}
2.给出一个随机字符串,判断有多少字母?多少数字?
import java.util.Scanner;
/给出一个随机字符串,判断有多少字母?多少数字?/
public class Lx2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print(“请输入字符串:”);
String str=sc.next();
char[] ch=str.toCharArray();//将字符串转换成字符
int letters=0,num=0;//定义计算数字和字母个数的变量
for (char c : ch) {
if(Character.isDigit©) {//判断是否为数字
num++;
}else if(Character.isLetter©) {//判断是否为字母
letters++;
}
}
System.out.println(str+“共有”+letters+“个字母,”+num+“个数字。”);
}
}
3.以下是一段歌词,请从这段歌词中统计出朋友出现的次数。
" 这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。 朋友一生一起走,那些日子不再有, 一 句 话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。";
提示:使用String方法indexOf、substring。
public class Lx4 {
public static void main(String[] args) {
String str=“这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。\r\n” +
“朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。”;
//定义出现的次数和指定索引
int i=0, beginIndex=0;
String s=“朋友”;
while(true) {
beginIndex=str.indexOf(s,beginIndex);
int endIndex=beginIndex+2;
if(beginIndex>0) {
s=str.substring(beginIndex, endIndex);
beginIndex++;//索引值加1,查找下一个朋友
i++;//记录朋友出现的次数
}else {
break;
}
}
System.out.println(s+“共出现了”+i+“次。”);
}
}
4.编写敏感词过滤程序 说明:在网络程序中,如聊天室、聊天软件等,经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。如“性”、“色情”、“爆炸”、“恐怖”、“枪”、“军火”等,这些都不可以在网上进行传播,需要过滤掉或者用其他词语替换掉。
提示:将用户的聊天内容保存到一个字符串对象或一个StringBuilder对象中,然后与敏感词语类表(数组实现)进行比对。如果属于敏感词语,就过滤掉或替换掉。
public class HomeWork6 {
public static void main(String[] args) {
/* Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
str = str.replace(‘性’,’’);
str = str.replace(‘枪’,’’);
str = str.replaceAll(“色情”,"");
str = str.replaceAll(“爆炸”,"");
str = str.replaceAll(“恐怖”,"");
str = str.replaceAll(“军火”,"");
System.out.println(str);*/
String str = “隔壁老王是个性欲很色情狂,他经常练习恐怖分子,私藏军火枪炮,常常拿着枪械制造爆炸事件!”;
String[] pb = {"性","色情","爆炸","恐怖","军火枪炮","枪"};
//遍历要屏蔽词的数组
for (int i = 0; i < pb.length; i++) {
int len = pb[i].length();//获得当前要屏蔽词的长度
//根据长度计算需要几个*
StringBuffer sb = new StringBuffer();
for (int j = 0; j < len; j++) {
sb.append("*");
}
//把屏蔽词替换成*
str = str.replace(pb[i], sb.toString());
}
System.out.println(str);
}
}
5.根据输入的年份、产品类型和随机数产生固定资产编号 即:固定资产编号=年份+0+产品类型+3位随机数
程序运行流程:
请输入年份:
请选择产品类型(1.台式机 2.笔记本 3.其他):
生成3位随机数 最后显示固定资产编号
提示:3位随机数按如下方法产生: (int)(Math.random()*1000);
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);
}
}
6.计算某年、某月、某日和某年、某月、某日之间的天数间隔和周数。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Test02_Date {
/**
* 计算某年、某月、某日和某年、某月、某日之间的天数间隔。要求年、月、日通过键盘输入传递到程序中。
*
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// 传输格式yyyyMMdd
Scanner sc = new Scanner(System.in);
System.out.println(“请输入第一个日期”);
String s_date1 = sc.next();
System.out.println(“请输入第二个日期”);
String s_date2 = sc.next();
// 转换成毫秒值运算
SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMdd”);
Date d1 = sdf.parse(s_date1);
Date d2 = sdf.parse(s_date2);
long time = Math.abs(d2.getTime() - d1.getTime());// 要绝对值
System.out.println(“间隔天数:” + (time / 1000 / 60 / 60 / 24));
}
}
7.计算并输出21世纪的闰年,计算程序的执行时间。
package 试题;
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+"毫秒");
}
}
8.编写一个程序,设定一个有大小写字母的字符串,先将字符串的大写字符输出,再将字符串中的小写字符输出。
package 试题;
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+" ");
}
}
}
}
9.编写程序,(Scanner)当以年-月-日的格式输入一个日期时,输出其该年是否为闰年,该月有几天,该日是星期几
import java.util.Calendar;
import java.util.Scanner;
public class Test99 {
public static void main(String[] args) {
date();
}
// 题目:输入某年某月某日,判断这一天是这一年的第几天?
public static void date() {
//定义一个数组,用于存放星期值
String[] week = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
// 定义一个变量,用于接收用户输入的时间
// 创建一个Scanner对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入日期:格式:yyyy-MM-dd");
// 进入死循环,接收输入的年月日,当输入的日期合法时,结束输入
while (true) {
// 接收用户输入
String str = sc.nextLine();
//测试日期
// String str = “2015-02-05”;
// 判断输入的格式是不是合法,采用正则表达式判断。
String regex = “[0-9]{4}-[0-1][0-9]-[0-3][0-9]”;
//只能确定判定输入的格式是不是正确
if (!str.matches(regex)) {
System.out.println(“输入格式不合法,请重新输入”);
//如果当前格式输入错误,提示重新输入
continue;
}
// 定义一个数组,用于接收拆分的字符串
String[] s = str.split("-");
//判断输入的数据是否合法,如果不合法将重新输入,如果合法就继续下面的计算
if(!judgeDate(Integer.parseInt(s[0]),Integer.parseInt(s[1])-1,Integer.parseInt(s[2]))){
System.out.println(“输入数据不合法,请重新输入”);
continue;
}
//定义一个类,获取时间
Calendar c = Calendar.getInstance();
//设置时间为输入时间,s[0]存放年,s[1]存放月,s[2]存放日。
//由于输入的月份是按照我们理解的日期计算【1-12】月,而国外采用的是【0-11】月,所以需要减一
c.set(Integer.parseInt(s[0]), Integer.parseInt(s[1])-1,
Integer.parseInt(s[2]));
//打印结果,获取时间
System.out.println(“今天是”+s[0]+“的第” + c.get(Calendar.DAY_OF_YEAR) +
“天\t”+week[c.get(Calendar.DAY_OF_WEEK)-1]);
break;
}
}
/*
* 功能:判断输入的日期是不是合法,
* 输入参数:接收年月日,int year,byte month,byte day
* 返回值:返回boolean类型数据,当输入的值合法时,返回true,否则false
*
*/
public static boolean judgeDate(int year,int month,int day){
Calendar c = Calendar.getInstance();
//先判断年份和月份是否合法
if(year>1900 && (month>=0 && month<12)){
//判断是不是月小
if(month == 3 || month == 5 || month == 8 || month == 10){
// 如果月小的话,日期的时间限制为1-31
if(day>0 && day<31){
// 满足要求,将年月日到设置为指定的日期(这里为当前输入的日期),并且结束输入
c.set(year, month, day);
return true;
}
System.out.println(“日期输入错误1!”);
//执行这句,则说明输入的年、月都正确,但是输入的日期不合法。
return false;
}
//判断是不是月大
else if(month == 0 || month == 2 || month == 4 || month == 6 || month == 7 || month == 9 || month == 11){
// 如果月大的话,日期的时间限制为1-30
if(day>0 && day<32){
// 满足要求,将年月日到设置为指定的日期(这里为当前输入的日期),并且结束输入
c.set(year, month, day);
return true;
}
System.out.println(“日期输入错误2!”);
//执行这句,则说明输入的年、月都正确,但是输入的日期不合法。
return false;
}
// 判断本年是不是闰年,根据是不是闰年来确定day的值是不是合法
else if(month == 1){
// 设置当前的时间为三月一日,
c.set(year, month+1,1);
// 将时间往前推一天,就可以获取本年二月的最大值
c.add(Calendar.DAY_OF_MONTH, -1);
// System.out.println(c.get(Calendar.DAY_OF_MONTH));
if(day>0 && day<c.get(Calendar.DAY_OF_MONTH)){
c.set(year, month, day);
return true;
}
System.out.println(“日期输入错误3!”);
//执行这句,则说明输入的年、月都正确,但是输入的日期不合法。
return false;
}
}
System.out.println(“日期输入错误4!”);
//执行这句,则说明输入的年、月输入错误。
return false;
}
}