JAVA关于字符串&&字符数组处理的小题目

JAVA关于字符串&&字符数组的小题目

第二题:分析以下需求,并用代码实现
1.键盘录入一个大字符串,再录入一个小字符串
2.统计小字符串在大字符串中出现的次数
3.代码运行打印格式:
请输入大字符串:woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma
请输入小字符串:heima

控制台输出:共出现3次

该题目我尝试用 面向过程 和 面向对象两种基本思路进行解答。先来面向过程。
 1 import java.util.Scanner;
 2 
 3 /*第二题:分析以下需求,并用代码实现
 4         1.键盘录入一个大字符串,再录入一个小字符串
 5         2.统计小字符串在大字符串中出现的次数
 6         3.代码运行打印格式:
 7         请输入大字符串:woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma
 8         请输入小字符串:heima
 9 
10         控制台输出:共出现3次
11         创建时间:2018年7月24日15:31:19
12         创建者:ccsoftlucifer
13         */
14 public class CountBigorSmallString {
15     public static void main(String[] args) {
16         String str1,str2;
17         Scanner sc = new Scanner(System.in);
18         System.out.println("请输入大串:");
19         str1 = sc.nextLine();
20         System.out.println("请输入小串:");
21         str2 = sc.nextLine();
22         System.out.println(countBigOrSmallString(str1,str2));
23        /*//用静态字符串先测试。
24         System.out.println(countBigOrSmallString("acbdcfcb","cb"));//结果应该为2
25         System.out.println(countBigOrSmallString("acbdcfcbdghcbsdggcb","cb"));//结果应该为4
26         System.out.println(countBigOrSmallString("acbcbdcfcb","cb"));//结果应该为3*/
27     }
28     public static int countBigOrSmallString(String str1,String str2){
29         int count=0;
30         //将 接收到的两组String类型的字符串分别转换为char 类型的字符数组。
31         char array1[] = str1.toCharArray();
32         char array2[] = str2.toCharArray();
33         for (int i = 0; i < array1.length; i++) {
34             int flag;
35             //用循环遍历 寻找与array2[0]相同的元素。
36             if(array1[i]==array2[0]){
37                 //对flag标记值进行初始化
38                 flag=0;
39                 //从相同的第一个元素头开始,比较后面其他的元素是否相同,只要有一个不同,则不相同。将标记值flag标记为1
40                 for (int j=0,k=i;j<array2.length;j++,k++){
41                     if (array1[k]!=array2[j]) {
42                         //flag = 1表示开头相同,后续字符串不相同的字符串。 不予以计数。
43                         flag=1;
44                     }
45                 }
46                 //如果标记值没标记为1,说明此次两个字符串比较,后续字符串全部相同,count++;
47                 if (flag==0)
48                     count++;
49            }
50         }
51         return count;
52     }
53 }

除了上述面向过程的解题思路之外,还有面向对象的方法,用indexOf(string,index) 和循环不断去找匹配的元素。

因为indexOf的返回值是匹配的的字符串的位置,那么我下次找的时候,就在该位置之后继续找。一直找不到返回-1为止。

 1 import java.util.Scanner;
 2 
 3 /*第二题:分析以下需求,并用代码实现
 4         1.键盘录入一个大字符串,再录入一个小字符串
 5         2.统计小字符串在大字符串中出现的次数
 6         3.代码运行打印格式:
 7         请输入大字符串:woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma
 8         请输入小字符串:heima
 9 
10         控制台输出:共出现3次
11         创建时间:2018年7月24日15:31:19
12         创建者:ccsoftlucifer
13         */
14 public class CountBigorSmallString {
15     public static void main(String[] args) {
16         String str1,str2;
17         Scanner sc = new Scanner(System.in);
18         System.out.println("请输入大串:");
19         str1 = sc.nextLine();
20         System.out.println("请输入小串:");
21         str2 = sc.nextLine();
22         System.out.println(countBigOrSmallString(str1,str2));
23        /*//用静态字符串先测试。
24         System.out.println(countBigOrSmallString("acbdcfcb","cb"));//结果应该为2
25         System.out.println(countBigOrSmallString("acbdcfcbdghcbsdggcb","cb"));//结果应该为4
26         System.out.println(countBigOrSmallString("acbcbdcfcb","cb"));//结果应该为3*/
27     }
28     public static int countBigOrSmallString(String str1,String str2){
29         int count=0;
30        // int start = str1.indexOf(str2);
31         int flag = 0;
32        // System.out.print(start);
33         int i =0;
34         //无限循环开始找
35         for (;;) {
36             //flag用来接收indexOf();方法的返回值
37             flag = str1.indexOf(str2,i);
38           //  System.out.print("flag="+flag+"   ");
39             //如果返回值>-1说明找到了,找到了就count ++
40             if(flag>-1)
41                 count++;
42             else
43                 //没有找到就跳出
44                 break;
45             //i如何自增的在本题是关键,每次当我们找到一个匹配的字符串之后,我们要跳过这个字符串进行下次搜索。
46             //那么 i的下次位置 = 方法返回第一个匹配字符的位置-这个字符当前的位置1 + 小字符串的长度
47             i=flag-1+str2.length();
48         }
49        // System.out.println(count);
50         return count;
51     }
52 }

 

 

 

第三题:分析以下需求,并用代码实现
定义String getStr()方法
功能描述:
获取长度为5的随机字符串
字符串由随机的4个大写英文字母和1个0-9之间(包含0和9)的整数组成
英文字母和数字的顺序是随机的
 1 import  java.util.*;
 2 /*
 3 * 第三题:分析以下需求,并用代码实现
 4         定义String getStr()方法
 5         功能描述:
 6             获取长度为5的随机字符串
 7             字符串由随机的4个大写英文字母和1个0-9之间(包含0和9)的整数组成
 8             英文字母和数字的顺序是随机的
 9             创建时间:2018年7月24日16:56:06
10             创建者:ccsoftlucifer
11 * */
12 public class RandomCharNum {
13     //定义String getStr()方法
14     public  static void getStr(){
15         //1.先创建一个字符数组,题目要求长度为5,即是字符数组的上限为5
16         char array[] = new  char[5];
17         //2.创建了字符数组之后呢,我们先随机生成一个索引值0-4,再产生一个随机值放入array[0]-array[4]随机一个中。
18        // Random ra = new Random();
19         int flag = new Random().nextInt(5);
20         int numRandom = new Random().nextInt(10);
21         array[flag] =(char)(numRandom+48);
22         //.3.用一个标记记住步骤2的索引值,除了那个索引值之外,其他的所有值 用随机方法,产生英文字母。
23         // 当索引值碰到标记值时,尝试用countinue语句跳过,这样就不会改变步骤2的值
24         for (int i=0;i<5;i++){
25             if(i==flag)
26                 continue;
27             int charRandom = new Random().nextInt(24);
28             array[i]=(char)(charRandom+'A');
29         }
30         for (int j=0;j<5;j++)
31             System.out.print(array[j]);
32     }
33 
34     public static void main(String[] args) {
35         getStr();
36     }
37 }

 















转载于:https://www.cnblogs.com/battlecry/p/9387777.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中的代码是一个Java程序,用于找到一种拼接方式,使得拼接后的字符串具有最低的字典序。该程序使用了自定义的比较器来对字符串进行排序,排序规则是将两个字符串拼接起来,比较拼接后的字符串的字典序。然后,程序将排序后的字符串依次拼接起来并返回最终结果。 引用\[2\]中的代码是一个Java程序,用于将字符串中的空格替换为"%20"。该程序首先将字符串转换为字符数组,然后遍历字符数组,将空格替换为"%20",并将替换后的字符添加到一个新的字符串中。最后,程序返回替换后的字符串。 引用\[3\]中的题目描述了一个问题,给定一个字符类型的数组chas,其中chas的右半区全是空字符,左半区不含有空字符。现在需要将左半区中的空格字符替换为"%20",并假设chas的右半区足够大以满足替换所需的空间。 综上所述,问题是给定一个字符串类型的数组chas,需要进行不同的操作,如找到拼接方式使得拼接后的字符串具有最低的字典序,或者将字符串中的空格替换为"%20"。请问您具体想要进行哪种操作? #### 引用[.reference_title] - *1* [给定一个字符串类型的数组strs,找到一种拼接方式,使得把所有字符串拼起来之后形成的字符串具有最低的字典...](https://blog.csdn.net/as1072966956/article/details/82993090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [给定一个字符类型的数组chas[]](https://blog.csdn.net/weixin_43230656/article/details/121359805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值