zoukankan      html  css  js  c++  java
  • 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 }














  • 相关阅读:
    MYSQL GDB 崩溃调试
    MYSQL GDB SHELL
    OOW 2015 MYSQL
    DTCC:MySQl核心代码开发经验揭示
    东东糖博客MYSQL
    perf 函数调用性能(函数流程图)
    Percona-Toolkit学习之安装和配置
    Upgrading Directly from MySQL 5.0 to 5.7 using an ‘In Place’ Upgrade
    在线遥感影像与地图集数据下载搜集
    墨卡托投影、高斯-克吕格投影、UTM投影及我国分带方法
  • 原文地址:https://www.cnblogs.com/battlecry/p/9387777.html
Copyright © 2011-2022 走看看