试题

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;
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值