本文最后更新于2020年11月22日,已超过 6 个月没更新!

JAVA程序设计基础作业四

第一部分

作业内容

编写一个类,该类的功能是可以根据给定的字符串(字符串中的内容是英文单词、英文字符和标点符号,字符串中单词之间有空格)和子串,计算出字符串中包含多少个子串。(要求:对字符串分词时使用String类的split方法。)
在主类中输入字符串和子串,之后使用上面的类检索出子串的数量。
例如,程序可以使用下面的框架:

  import java.util.Scanner;
  class CountSubString
  {
  //【变量声明】
  //方法实现
  void countSubString(String s, String substring)
  {
       //【代码】
  }
  }
  public class CountString
  {
         public static void main(String args[])
         {
                Scanner reader=new Scanner(System.in);
                System.out.println("请输入字符串:");
                String s=reader.nextLine();
                System.out.println("请输入你要检索的子串:");
                String substring=reader.nextLine();
                CountSubString a=new CountSubString();
                a.countSubString(s, substring);
         }
  }

例如,可以输入字符串“I like apple. The apple is decilious. Do you like apple?”和子串“apple”,程序的运行结果应该是检索到3个apple。

代码

import java.util.Scanner;

class CountSubString
{
    void countSubString(String str,String substring)
    {
        int ss = 0;
        String[] words=str.split("[\\s|.?,;:`~<>!]+");
        for(int i=0;i<words.length;i++)
        {
            if(words[i].equals(substring))
            ss++;
        }
        System.out.println(ss);
    }
}
public class CountString1 
{
    public static void main(String[] args) {
        Scanner reader=new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s=reader.nextLine();
        System.out.println("请输入你要检索的子串:");
        String substring=reader.nextLine();
        CountSubString a=new CountSubString();
        a.countSubString(s, substring);
    }
}

第二部分

作业内容

编写一个类,该类的功能是可以根据给定的字符串(字符串中的内容是英文单词、英文字符和标点符号,字符串中单词之间有空格)和子串,计算出字符串中包含多少个子串。(要求:使用StringTokenizer类实现。)
这一部分的程序框架和第一部分相同,只是void countSubString(String s, String substring)方法的具体实现不同。

代码

import java.util.*;
class CountSubString
{
    void countSubString(String str,String substring)
    {
        int ss=0;
        StringTokenizer stkn=new StringTokenizer(str," |.?,;:`~<>!]+");
        while(stkn.hasMoreElements())
        {
                String s1=stkn.nextToken();
                if(s1.equals(substring))
                {
                    ss++;
                }
        }
        System.out.println(ss);
    }
}

public class CountString2 
{
    public static void main(String[] args) {
        Scanner reader=new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s=reader.nextLine();
        System.out.println("请输入你要检索的子串:");
        String substring=reader.nextLine();
        CountSubString a=new CountSubString();
        a.countSubString(s, substring);
    }
}

第三部分

作业内容

编写一个类,该类的功能是可以根据给定的字符串(字符串的内容可以是中文,也可以是英文,字符串中单词之间没有空格)和子串,计算出字符串中包含多少个子串。(提示,可以使用StringindexOf(String s)方法实现。)
这一部分的程序框架和前两部分相同,只是void countSubString(String s, String substring)方法的具体实现不同。
例如,可以输入字符串“Ilikeapple.Theappleisdecilious.Doyoulikeapple?”和子串“apple”,程序的运行结果应该是检索到3个apple。

代码

import java.util.*;
class CountSubString
{
    void countSubString(String str,String substring)
    {
        int count = 0;
        int index = -1;
        while ((index = str.indexOf(substring, index)) > -1) 
        {
            ++index;
            ++count;
        }
        System.out.println(count);
    }
}

public class CountString3 
{
    public static void main(String[] args) {
        Scanner reader=new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s=reader.nextLine();
        System.out.println("请输入你要检索的子串:");
        String substring=reader.nextLine();
        CountSubString a=new CountSubString();
        a.countSubString(s, substring);
    }
}

疏影横斜水清浅,暗香浮动月黄昏