如何比较Java中一个字符串的单词和另一个字符串的单词,并将匹配的单词分开?

如何比较Java中一个字符串的单词和另一个字符串的单词,并将匹配的单词分开?,java,arrays,string,Java,Arrays,String,这是一个面试问题。 您被告知从用户处获取字符串输入并输出一个字符串(或字符串数组),该字符串由空格分隔,其中有意义的单词与另一个名为Dictionary的字符串相匹配。您可以使用字典功能检查单词是否存在。 例如: 如果输入为“你好” 输出应为“你好” 字典字符串中存在单词“how”、“are”、“you” 再举一个例子: Input:“somethingsneedstobedone 输出:“需要做点什么 (假设字典里有诸如某事、需要、要、做之类的词 如果没有匹配,我就不知道什么时候做k++了 我

这是一个面试问题。 您被告知从用户处获取字符串输入并输出一个字符串(或字符串数组),该字符串由空格分隔,其中有意义的单词与另一个名为Dictionary的字符串相匹配。您可以使用字典功能检查单词是否存在。
例如:
如果
输入为“你好”
输出应为“你好”

字典字符串中存在单词“how”、“are”、“you”

再举一个例子:
Input:“somethingsneedstobedone
输出:“需要做点什么
(假设字典里有诸如某事、需要、要、做之类的词

如果没有匹配,我就不知道什么时候做k++了

我尝试的代码:

public class Sample1 {
public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int i,j,k,len;
    String[] dict= {"how","are","you","something","needs","to","be","done"};
    //StringBuilder str=new StringBuilder("howareyou");
    StringBuilder str=new StringBuilder("somethingneedstobedone");
    len=str.length();
    for(i=0,j=0,k=0;i<len;i++)
    {
        for(j=i+1;j<len;j++)
        {
            if(dict[k].toString().equals(str.substring(i, j)))
            {
                str.insert(j, " ");
                k++;
            }
        }
    }
    System.out.println(str);
    sc.close();
}
公共类样本1{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int i,j,k,len;
String[]dict={“how”、“are”、“you”、“something”、“needs”、“to”、“be”、“done”};
//StringBuilder str=新的StringBuilder(“你好”);
StringBuilder str=新的StringBuilder(“需要的东西”);
len=str.length();
因为(i=0,j=0,k=0;i您遇到的问题(以及第一个字符串成功而第二个字符串没有成功的原因)与dict中的单词顺序有关。
您当前的实现将检查dict中的单词在字符串中的显示顺序是否与它们在dict中的输入顺序完全一致
找到第一个单词后,请在空格中填入第二个单词。如果找不到下一个单词,则不会继续此过程

重写代码以获得所需内容的方法有很多种,但最小的改动是:

public class Sample1 {
public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
int i,j,k,len;
    String[] dict= {"how","are","you","something","needs","to","be","done"};
    //StringBuilder str=new StringBuilder("howareyou");
    StringBuilder str=new StringBuilder("somethingneedstobedone");
    len=str.length();
    for(i=0,j=0;i<len;i++) //removed k from here
    {
        for(j=i+1;j<len;j++)
        {
          for (k=0;k<dict.length;k++) { //added this loop!
            if(dict[k].toString().equals(str.substring(i, j)))
            {
                str.insert(j, " ");
            }
          } //Loop closing for k - the dictionary
        }
    }
    System.out.println(str); 
    sc.close();
}
公共类样本1{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
int i,j,k,len;
String[]dict={“how”、“are”、“you”、“something”、“needs”、“to”、“be”、“done”};
//StringBuilder str=新的StringBuilder(“你好”);
StringBuilder str=新的StringBuilder(“需要的东西”);
len=str.length();

对于(i=0,j=0;i请包含您尝试过的代码。此外,还不清楚字典是如何表示的。
something
可以解析为
something
something