String练习题
1,一组,六道
System.out.println("==============一 1================");
String str ="at7cH630OPbQ81";
System.out.println("由"+str.length()+"组成");//String 型的数组 与char类型的数组的区别
总结:1,String数据类型本身就算是字符数据类型的数组
2,相关语法:tocharAraay()
charAt(Index)
3,字符串的语法:startsWith()
endWith()
length()
substring()
split()
System.out.println("==============一 2================");
char [] array = str.toCharArray();
int a = 0;
int b = 0;
int c = 0;
for (int i = 0; i < array.length; i++) {
if(array[i]>'0'&&array[i]<'9') {//字符的比较,
a ++;
}else if (array[i]>'a'&&array[i]<'z') {
b++;
}else if (array[i]>'A'&&array[i]<'Z') {
c ++;
}
}
System.out.println("数字的个数:"+a);
System.out.println("大写字母的个数:"+b);
System.out.println("小写字母的个数:"+c);
总结:1,数字,字母常与Ascll码结合;
题型:1,个数;2,首字母;3,字符长度;4,字母转换
设计知识:1,startsWith()
题型:1,姓氏,
System.out.println("==============二================");
String str2 = "王清,苏小雨,唐纯莉,王璐袁,蒋藤椒";
String [] counts =str2.split(","); //容易遗忘数组
int nums =0;
System.out.println("人数"+counts.length);
System.out.println("第二个人的名字:"+counts[2]);
System.out.println("性王的人的姓名:");
for (int i = 0; i < counts.length; i++) {
if(counts[i].startsWith("王")) {
System.out.println(counts[i]);
nums ++;
}
}
System.out.println("性王的人数:"+nums);
涉及知识:1,startsWith()
System.out.println("==============三================");
String [] arr = {"姜刚","董天启","彦伯成","王显菊","董存瑞","万清"};
int nums3 =0;
int nums4 =0;
for (int i = 0; i < arr.length; i++) {
if (arr[i].length()==2) {//元素和String的转换,char的考虑
nums3 ++;
}
if (arr[i].length()==3) {
nums4 ++;
}
}
System.out.println("两个字的名字个数:"+nums3);
System.out.println("三个字的名字个数:"+nums4);
System.out.println("==============四================");
String [] arr = {"姜刚","董天启","彦伯成","王显菊","董存瑞","万清"};
int nums1 = 0;
int nums2 =0;
for (int i = 0; i < arr.length; i++) {
if(arr[i].startsWith("董")) {
System.out.println(arr[i]);
nums1 ++;
}
if(arr[i].length()==3) {//length 带括号/不带括号;元素是Stirng类型
nums2 ++;
}
}
System.out.println("性董的成员个数"+nums1);
System.out.println("名字是三位数的有:"+nums2);
总结:1,在字符串中,length带();数组中不带括号
System.out.println("==============五================");
String [] arr = {"姜刚","董天启","董成","王显菊","董存瑞","万清"};
System.out.println("性董的三个人员:");
for (int i = 0; i < arr.length; i++) {
if(arr[i].length()==3 && arr[i].startsWith("董")) {
System.out.print(arr[i]+" ");
}
}
System.out.println();
System.out.println("性董的或三个人员:");
for (int i = 0; i < arr.length; i++) {
if(arr[i].length()==3 || arr[i].startsWith("董")) {
System.out.print(arr[i]+" ");
}
}
System.out.println();
System.out.println("不性董的或三个人员:");
for (int i = 0; i < arr.length; i++) {
if (arr[i].startsWith("董")) {
continue;
}
System.out.print(arr[i]+" ");
}
System.out.println("==============六================");
String [] arr = {"S-苏小雨","W-王婧","C-陈小雨","Z-姜藤椒"};
System.out.println("首字母为w的人员:");
for (int i = 0; i < arr.length; i++) {
if(arr[i].startsWith("W")) {
System.out.println(arr[i]);
}
}
System.out.println();
System.out.println("首字母在u~z之间的人员:");
for (int i = 0; i < arr.length; i++) {
if(arr[i].charAt(0)>='U' && arr[i].charAt(0)<='Z') {//字符串,取值,比较大小;有范围类String题目,需提取成char ,进行比较
System.out.print(arr[i]+" ");
}
}
涉及知识:1,charAt()
题型:1,首字母.姓氏问题;2,范围类判断,
1,最终总结:
1,startswith()
题型:1,姓氏
2,charAt()
题型1,首字母,姓氏问题;2,范围判断类(判断是否含数字,字母)
3,length()
题型:1,判断名字长度
2,问题
1,常见题型有哪些?
答:名字长度,姓氏,字母转换
2,思考:
a:String常用方法?
b:string,char 和数组之间的关联?容易搞混的点在哪里?
数组的元素常用:整型和字符串;而字符串本身算是一种数组.
2 .二组,7道
System.out.println("================1==============");
String str = "hello world,hello china";
String str1 = "";
for (int i = str.length()-1; i >=0; i--) {//字符串反转,利用字符串拼接
str1 +=str.charAt(i);
}
System.out.println(str1);//有String方法,待使用
涉及常识:字符串拼接
题型:1,字符串反转;拼接
区别:数组的反转;索引转换
System.out.println("=================2===单一===============");
String [] str2 =str.split(",");
String [] strone = str2[0].split(" ");//数组元素的应用
String [] strtwo = str2[1].split(" ");
System.out.println(strone[0]+" "+strone[1]+","+strtwo[0]+" "+strtwo[1]);
涉及知识:split("")切割
题型特征:明显标示
System.out.println("=================2.1==循环================");
String str5 = "";
String[] str3 = str.split(" ");
for (int j = 0; j < str3.length; j++) {//感悟: 循环内,任何输出都有两次,除非跳出
str5 += str3[j] + " ";
for (int i = 0; i >= 1; i++) {
str5 += ",";
break;
}
}
System.out.println(str5);
System.out.println("=================3====================");
String threeStr ="abcd12absdabsdfabsadfba";
int count =0;
char [] cha =threeStr.toCharArray();
for (int i = 0; i < cha.length-1; i++) {//无法使用foreach,因为需要对索引的运用
if(cha[i]=='a'&&cha[i+1]=='b') {
count ++;
}
}
System.out.println("ab出现的个数:"+count);
思路:拼接和索引;
知识:索引,subString();
System.out.println("=================4====================");
Scanner sc = new Scanner(System.in);
System.out.println("请输入一串英文字母:");
String input = sc.next();
String laterInput = "";
char [] cha =input.toCharArray();
for (char c : cha) {
if(c>='a'&&c<='z') {
c -= 32;
}else if (c>='A' && c<= 'Z') {//双if和if-else在实际应用中的细微区别
c += 32;
}
laterInput +=c;
}
System.out.println(laterInput);
总结:if-else的两个代码块;只执行一个方向;不过实际中,两种情况代码都需要进行;和双if的执行情况一样.
System.out.println("=================5====================");
String str1 = " ddasfre ";
char [] cha = str1.toCharArray();
String str2 ="";
for (int i = 1; i < cha.length-1; i++) {
str2 +=cha[i];
}
System.out.println("原字符串"+"|"+str1+"|");
System.out.println("改变后"+"|"+str2+"|");
System.out.println("=================6====================");
System.out.println("请输入一串英文字母:");
String input = sc.next();
char [] cha1 = input.toCharArray();
String laterInupt = "";
for (char c : cha1) {
if (c>='0'&&c<='9') {
}else if (c>='a' && c<='z'){
c -= 32;
}else if (c>='A' && c<='Z') {
c += 32;
}
laterInupt += c;
}
System.out.println("改变后:"+laterInupt);
System.out.println("=================7==7.1==================");
System.out.println("请输入一个标识符:");
String input1 = sc.next();
char [] d =input1.toCharArray();
char a = input1.charAt(0);
int count = -1;
if(a=='_' ||a==',' ||a=='$' ||(a>='a' && a<='z') ||(a>='A' && a<='Z')) {
for (char c : d) {
if(a=='_' ||a==',' ||a=='$' ||(a>='a' && a<='z') ||(a>='A' && a<='Z')||a>='0'&&a<='9'){
count ++;
}
}
}
if (count != -1) {
System.out.println("标识符合理");
}else {
System.out.println("标识符不合理");
}
System.out.println("=================7==7.2==================");
for (int i = 0; i < str.length(); i++) {
char key=str.charAt(i);
if(i==0 &&!(key>='a'&&key<='z'||key>'A'&&key<='Z'||key=='_'||key=='$'))
{
System.out.println("该标识符开头不合法");
break;
}
if(i!=0&&!(key>='a'&&key<='z'||key>'A'&&key<='Z'||key>='0'&&key<='9'||key=='_'||key=='$'))
{
System.out.println("该标识符存在非法字符");
break;
}
}
3,三组,7道
System.out.println("====================1,=======================");
int[] arr5 = { 13, 15, 6, 9, 8, 12, 5 };
// 计算所有成员的平均值
// 计算其中>10的成员的平均值
int sum1 = 0;
int sum2 = 0;
int count1 = 0;
for (int i : arr5) {
sum1 += i;
}
System.out.println("1,所有成员的平均数:" + sum1 / arr5.length);
for (int i : arr5) {
if (i > 10) {
sum2 += i;
count1++;
}
}
System.out.println("2,大于10的成员的平均值:" + sum2 / count1);
System.out.println("====================2,=======================");
String[] arr2 = { "亚瑟", "安琪拉", "兰陵王", "周瑜", "诸葛亮" };
// 获得2字名的英雄,并输出.
// 3字名的英雄有多少个?
System.out.println("1,获得2字名的英雄,并输出:");
for (String string : arr2) {
if (string.length() == 2) {
System.out.println(string);
}
}
int count2 = 0;
for (String string : arr2) {
if (string.length() == 3) {
count2++;
}
}
System.out.println("2,3字名的英雄有:" + count2 + "个");
System.out.println("====================3,=======================");
String[] arr3 = { "亚瑟-肉", "宫本武藏-刺客", "张飞-肉", "鲁班-射手", "狄仁杰-射手" };
// 获取所有的"肉"型英雄,并输出.
// 请问"射手"型英雄有几个?
System.out.println("1,肉型英雄:");
for (String string : arr3) {
if (string.endsWith("肉")) {
System.out.println(string);
}
}
int count3 = 0;
for (String string : arr3) {
if (string.endsWith("射手")) {
count3++;
}
}
System.out.println("1,射手型英雄有" + count3 + "个");
System.out.println("====================4,=======================");
String[] arr4 = { "罗智利-20", "陈海燕-12", "刘颖聪-30", "邬艳-25", "王璐苑-14" };
// 请问这些员工的平均年龄是多少?
// 找出其中的未成年员工
// 请问未成年员工的平均年龄是多少?
int sum3 = 0;
int count4 = 0;
for (String string : arr4) {
String[] arr = string.split("-");
int age = Integer.parseInt(arr[1]);//字符串转换数字;自带类包的方法
sum3 += age;
count4++;
}
System.out.println("1,平均年龄是" + (double) sum3 / count4);
System.out.println("1,未成年员工:");
for (String string : arr4) {
String[] arr = string.split("-");
int age = Integer.parseInt(arr[1]);
if (age < 18) {
System.out.println(string);
}
}
int sum4 = 0;
int count5 = 0;
for (String string : arr4) {
String[] arr = string.split("-");
int age = Integer.parseInt(arr[1]);
if (age < 18) {
sum4 += age;
count5++;
}
}
System.out.println("1,未成年的平均年龄是" + (double) sum4 / count5);
System.out.println("=================5=======================");
Scanner sc = new Scanner(System.in);
String[] arr={"S-苏小雨","W-王婧","C-陈小雨","J-姜藤椒"};
System.out.println("请输入你查询姓氏的首字母:");
String str = sc.next();
System.out.println("=================5==1.1=====================");
int count = -1;
for (String string : arr) {
String [] arr1 = string.split("-");
if(arr1[0].equals(str)) {
System.out.println(arr1[1]);
count ++;
}
}
if(count == -1) {
System.out.println("不存在");
}
System.out.println("=================5==1.2=====================");
for (String string : arr) {
if(string.startsWith(str)) {
System.out.println(string);
}
}
System.out.println("=================5==1.3=====================");
for (String string : arr) {
if(string.subSequence(0, 1).equals(str)) {
System.out.println(string);
}
}
System.out.println("=================6========================");
String[] arr1 = { "亚瑟", "安琪拉", "兰陵王", "百里守约", "周瑜", "诸葛亮" };
System.out.println("请输入英雄名字的长度");
int len = sc.nextInt();
for (String string : arr1) {
if(string.length()==len) {
System.out.println(string);
}
}
System.out.println("=================7========================");
String [] str1 = {"王箐","苏小雨","唐纯莉","王小苑","姜藤椒","姜子牙","唐骏"};
System.out.println("请输入查询名称的姓氏:");
String name = sc.next();
for (String string : str1) {
if(string.startsWith(name)) {
System.out.println(string);
}
}
System.out.println("请输入关键字:");
String str2 = sc.next();
for (String string : str1) {
if(string.contains(str2)) {
System.out.println(string);
}
}