1、编写程序,想想2乘8最简单的方法;
答案:先思考,再看答案
代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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); } }
答案:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
// 左移 // 16 // 32 // 24 // 16 // 20 // 24 // ---------------- // 右移 // 1 // 3 // 4 // 2
2、请根据控制台输入的特定日期格式拆分日期
如:请输入一个日期(格式如:**月**日****年)
经过处理得到:****年**月**日
答案:代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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);
结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
//输入:12月31日2019年 //输出:2019年12月31日
3、给出一个随机字符串,判断有多少字母?多少数字?
答案:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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+"个。"); } }
结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
//输入:gsrgs4654 //输出: //数字右4个。 //字母有5个。
4、以下是一段歌词,请从这段歌词中统计出朋友出现的次数。
"这些年一个人,风也过,雨也走,有过泪,有过错, 还记得坚持甚么,真爱过才会懂,会寂寞会回首,终有梦终有你在心中。
朋友一生一起走,那些日子不再有,一句话,一辈子,一生情,一杯酒。朋友不曾孤单过,一声朋友你会懂,还有伤,还有痛,还要走,还有我。";
答案:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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)); } }
结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
//3
5、编写敏感词过滤程序
说明:在网络程序中,如聊天室、聊天软件等,经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。如“性”、“色情”、“爆炸”、“恐怖”、“枪”、“军火”等,这些都不可以在网上进行传播,需要过 滤掉或者用其他词语替换掉。
提示:将用户的聊天内容保存到一个字符串对象或一个StringBuilder对象中,然后与敏感词语类表(数组实现)进行比对。如果属于敏感词语,就过滤掉或替换掉。
答案:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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); } } //不要谈性色变,不要接触色情,更不要动枪和军火,这很恐怖,会爆炸,还很暴力。 //不要谈*色变,不要接触**,更不要动*和**,这很**,会**,还很**。
6、根据输入的年份、产品类型和随机数产生固定资产编号
即:固定资产编号=年份+0+产品类型+3位随机数
程序运行流程:请输入年份:
……
请选择产品类型(1. 台式机 2. 笔记本 3. 其他):
……
生成3位随机数
最后显示固定资产编号
提示:3位随机数按如下方法产生:
(int)(Math.random()*1000);
答案:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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); } }
结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
请输入年份: 1999 //输入 请选择产品类型(1. 台式机 2. 笔记本 3. 其他) 3 //输入 199903936
7、计算并输出21世纪的闰年,计算程序的执行时间。
答案:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
//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"); //输出程序运行时间 } }
结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
// 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
8、编写一个程序,设定一个有大小写字母的字符串,先将字符串的大写字符输出,再将字符串中的小写字符输出。
答案:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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 + "个。"); } }
结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
//请输入含有大小写字母的字符串,例如:AAAaaa //AAAAaaaa //输入 //大写字母为: //A A A A //小写字母为: //a a a a //大写字母共4个。 //小写字母共4个。
9、编写程序,(Scanner)当以年-月-日的格式输入一个日期时,输出其该年是否为闰年,该月有几天,该日是星期几。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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+"天"); } }
结果:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
//请输入一个日期:(例:1999年1月1日) //2019年4月25日 //2019 年是平年 //该年4月有30天 //这天是这周的第4天