1、已知字符串:"this is a test of java". 按要求执行以下操作: (1) 统计该字符串中字母s出现的次数 (2) 取出子字符串"test" (3) 用多种方式将本字符串赋值到一个字符数组char[] str中. (4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。 (5) 用两种方式实现该字符串的倒序输出。(用StringBuffer和for循环方式分别实现) (6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的英文单词,并输出到控制台
//1、已知字符串:"this is a test of java". //按要求执行以下操作: //(1) 统计该字符串中字母s出现的次数 //(2) 取出子字符串"test" //(3) 用多种方式将本字符串赋值到一个字符数组char[] str中. //(4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。 //(5) 用两种方式实现该字符串的倒序输出。(用StringBuffer和for循环方式分别实现) //(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的英文单词,并输出到控制台 public class HomeWork01 { public static void main(String[] args) { String str="this is a test of java"; m1(str); m2(str); m3(str); m4(str); m5(str); m6(str); } public static void m1(String str){ //(1) 统计该字符串中字母s出现的次数 int index=0; int count=0; for (int i = 0; i < str.length(); i++) { int flag=index; index=str.indexOf("s",index+1); if (index==-1){ break; } if (flag!=index){ count++; } } System.out.println("字母s出现的次数"+count); } // //(2)取出子字符串"test" public static void m2(String str){ //获取下标 int index=str.indexOf("test"); //取字符串 String str2 = str.substring(index,index+"test".length()); System.out.println(str2); } //(3) 用多种方式将本字符串赋值到一个字符数组char[] str中 public static void m3(String str){ //方法一 char[] c1=str.toCharArray(); System.out.println(Arrays.toString(c1)); //方法二 char[] c2=new char[str.length()]; for (int i = 0; i < str.length(); i++) { c2[i]=str.charAt(i); } System.out.println(Arrays.toString(c2)); } //(4) 将字符串中每个单词的第一个字母变成大写, 输出到控制台。 public static void m4(String str){ char[] chars = str.toCharArray(); //开始首字母大写 chars[0]-=32; for (int i = 0; i < chars.length-1; i++) { if (chars[i]==' '){ chars[i+1]-=32; } } System.out.println(Arrays.toString(chars)); } //(5) 用两种方式实现该字符串的倒序输出。(用StringBuffer和for循环方式分别实现) public static void m5(String str){ //第一种 for (int i = str.length()-1; i >=0 ; i--) { System.out.print(str.charAt(i)); } System.out.println(); //第二种 StringBuffer strb = new StringBuffer(str); strb.reverse(); System.out.println(strb); } //(6) 将本字符串转换成一个字符串数组,要求每个数组元素都是一个有意义的英文单词,并输出到控制台 public static void m6(String str){ String[] s = str.split(" "); System.out.println(Arrays.toString(s)); } }
2、 找出字符串里有几个java "hello java ,java is XXX ,java is xxx";
public class HomeWork02 { //2、 找出字符串里有几个java //"hello java ,java is XXX ,java is xxx"; public static void main(String[] args) { String str="hello java ,java is XXX ,java is xxx"; int index=-1; int count=0; for (int i = 0; i < str.length(); i++) { int flag=index; index= str.indexOf("java",index+1); if (index==-1){ break; } if (index!=flag){ count++; } } System.out.println("java个数:"+count); } }
3、 输出一个字符串里的大写字母数,小写英文字母数,非英文字母数
public class HomeWork03 { //3、 输出一个字符串里的大写字母数,小写英文字母数,非英文字母数 public static void main(String[] args) { String str="DAFdsf21."; int Anum=0;//大写字母 int anum=0;//小写字母 int otherNum=0;//其他 for (int i = 0; i < str.length(); i++) { if (str.charAt(i)<=90&&str.charAt(i)>=65){ Anum++; }else if (str.charAt(i)>=97&&str.charAt(i)<=122){ anum++; }else { otherNum++; } } System.out.println("大写字母:"+Anum+"小写字母:"+anum+"其他:"+otherNum); } }
4、 将以下字符串,使用两种方法把这个字符串中的单词首字母转为大写
另一种方法的思路:提示大写字母与小写字母相差32,如a = 97 A = 65, 注意空格要排除在外 String str = "hello java and python!";
//4、 将以下字符串,使用两种方法把这个字符串中的单词首字母转为大写 // //另一种方法的思路:提示大写字母与小写字母相差32,如a = 97 A = 65, 注意空格要排除在外 //String str = "hello java and python!"; public class HomeWork04 { public static void main(String[] args) { String str = "hello java and python!"; m1(str); m2(str); } public static void m1(String str){ char[] chars = str.toCharArray(); //开始首字母大写 chars[0]-=32; for (int i = 0; i < chars.length-1; i++) { if (chars[i]==' '){ chars[i+1]-=32; } } System.out.println(Arrays.toString(chars)); } public static void m2(String str){ String[] strs = str.split(" "); for (int i = 0; i < strs.length; i++) { strs[i]= strs[i].toUpperCase(); String sub1 = strs[i].substring(1); sub1=sub1.toLowerCase(); strs[i]=strs[i].charAt(0)+sub1; } System.out.println(Arrays.toString(strs)); } }
5、 输入自己的身份证号码,并由此号码输出自己的生日,如1998年8月20日
public class HomeWork05 { //5、 输入自己的身份证号码,并由此号码输出自己的生日,如1998年8月20日 public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入身份证号"); String idNum = sc.next(); String year=idNum.substring(6,10); String month=idNum.substring(10,12); String day=idNum.substring(12,14); System.out.println(year+"年"+month+"月"+day+"日"); } }
选做题: 1、 String s= "name=zhangsan height=180 classNo=90728"; 将上面的字符串拆分,结果如下: zhangsan 180 90728
//1、 String s= "name=zhangsan height=180 classNo=90728"; //将上面的字符串拆分,结果如下: //zhangsan 180 90728 public class HomeWork06 { public static void main(String[] args) { String s= "name=zhangsan height=180 classNo=90728"; String[] split = s.split(" "); System.out.println(Arrays.toString(split)); for (int i = 0; i < split.length; i++) { for (int j = 0; j < split[i].length(); j++) { if (split[i].charAt(j)=='='){ split[i]=split[i].substring(j+1); } } } System.out.println(Arrays.toString(split)); } }
2、模拟一个trim功能一致的方法。去除字符串两端的空白
//模拟一个trim功能一致的方法。去除字符串两端的空白 public class HomeWork07 { public static void main(String[] args) { String str=" 1 23 "; str.trim(); System.out.println(str.trim()); int count=0; for (int i = 0; i < str.length(); i++) { if (str.charAt(i)==' '){ count++; }else { str=str.substring(count); } } //反转 StringBuffer stb = new StringBuffer(str); stb=stb.reverse(); String str2=new String(stb); int vercount=0; for (int i = 0; i < str2.length(); i++) { if (str2.charAt(i)==' '){ vercount++; }else { str2=str2.substring(vercount); } } StringBuffer stb2 = new StringBuffer(str2); stb2 = stb2.reverse(); System.out.println(stb2); } }
思考题: 1、 获取两个字符串中最大相同的子串。 第一个动作:将短串进行长度依次递减的子串打印。 "abcwerthellouyiodef" "cvhellobnm" 思路: 将短串按照长度递减的方式获取到。 将每获取到的子串去长串中判断是否包含,如果包含,已经找到。
//1、 获取两个字符串中最大相同的子串。 //第一个动作:将短串进行长度依次递减的子串打印。 //"abcwerthellouyiodef" //"cvhellobnm" //思路: //将短串按照长度递减的方式获取到。 //将每获取到的子串去长串中判断是否包含,如果包含,已经找到。 public class HomeWork08 { public static void main(String[] args) { String str1="abcwerthellouyiodef"; String str2="cvhellobnm"; String str3="";//最长子串 int index=-1; index=str1.indexOf(str2); if (index!=-1){ System.out.println("最长字串为:"+str2); return; } //i为字串长度 for (int i = str2.length()-1; i >0 ; i--) { //j为字串开始下标 for (int j = 0; j < str2.length(); j++) { if (j+i<=str2.length()){ str3=str2.substring(j,j+i); index=str1.indexOf(str3); } if (index!=-1){ System.out.println(str3); return; } } } System.out.println("没有相同字串"); } }
1、编程题: a、完成一个抽查作业程序,定义一个字符串数组保存姓名,一次随机3个不重复的姓名并输出
import java.util.Arrays; import java.util.Random; public class HomeWork09 { public static void main(String[] args) { m1(); } public static void m1(){ String[] names={"张三","李四","jack","jojo","tom"}; String[] strings = new String[3]; boolean[] booleans = new boolean[names.length]; Random ra = new Random(); int i=0; while(i<3) { int temp=ra.nextInt(names.length); if (!booleans[temp]){ strings[i]=names[temp]; booleans[temp]=true; i++; } } System.out.println(Arrays.toString(strings)); } }
b、用两种方法将系统当前的时间并格式化成(2019-11-12 12 :30: 21)这种格式
public static void m2(){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String format = sdf.format(date); System.out.println(format); }
c、定义一个方法,可以计算出两个日期之间相差多少天例如: 2018年2月17日到2019年3月29日中间一共有多少天?
public static void m3(){ Date day1 = new Date(2018,02 ,17); Date day2 = new Date(2019 , 03 , 29); long sumDay = day2.getTime() - day1.getTime(); System.out.println(sumDay); }
2、完成一个猜拳的小游戏。 由系统随机一个数(0表示石头1表示剪刀2表示布),然后用户输入一个数(0表示石头1表示剪刀2表示布)。输出得出谁赢、谁输,还是平局。 输出的时候要输出“石头”、“剪刀”、“布”,不要输出0、1、2 可以写在一个循环里面。输入y表示还想玩,n表示退出游戏。结束之后要输出赢了多少次、输了多少次、平局多少次、记录游戏时长
import java.util.Random; import java.util.Scanner; //2、完成一个猜拳的小游戏。 // 由系统随机一个数(0表示石头1表示剪刀2表示布),然后用户输入一个数(0表示石头1表示剪刀2表示布)。输出得出谁赢、谁输,还是平局。 // 输出的时候要输出“石头”、“剪刀”、“布”,不要输出0、1、2 // 可以写在一个循环里面。输入y表示还想玩,n表示退出游戏。结束之后要输出赢了多少次、输了多少次、平局多少次、记录游戏时长 public class HomeWork10 { public static void main(String[] args) { Random ra = new Random(); Scanner sc = new Scanner(System.in); //记录输赢 int win=0; int lose=0; int balance=0; long start = System.currentTimeMillis(); while (true){ System.out.println("请问是否继续?y.继续 n.退出"); String option = sc.next(); if (option.equals("n")){ break; } int op=ra.nextInt(3); System.out.println("请输入你的选择:0:石头 1.剪刀 2.布"); int i = sc.nextInt(); switch (i){ case 0: if (op==0){ System.out.println("平局"); balance++; }else if (op==1){ System.out.println("你赢了"); win++; }else { System.out.println("你输了"); lose++; } break; case 1: if (op==1){ System.out.println("平局"); balance++; }else if (op==2){ System.out.println("你赢了"); win++; }else { System.out.println("你输了"); lose++; } break; case 2: if (op==2){ System.out.println("平局"); balance++; }else if (op==0){ System.out.println("你赢了"); win++; }else { System.out.println("你输了"); lose++; } break; default: System.out.println("输入有误"); break; } } long end = System.currentTimeMillis(); System.out.println("胜利次数:"+win+"失败次数:"+lose+"平局次数:"+balance+"游戏时间:"+(end-start)); } }