Java 如何通过char数组搜索字符串数组?

Java 如何通过char数组搜索字符串数组?,java,arrays,Java,Arrays,我想在不使用字典库的情况下构建一个简单的字典搜索程序。如果数组中的字符串等于char数组,我想搜索字符串数组。它应该打印字符串及其索引号。如果有两个字符串与字符匹配,那么它应该打印第一个字符串并保留后面的字符串 例如字符串数组[fine,rest,door,shine]字符['t','r','e','s']。答案应该是索引1。如果字符串rest是repeat,那么它应该只打印第一个 我试图比较字符串数组和字符数组,但它返回了字符串数组中与字符数组匹配的所有单词 String strArray[]

我想在不使用字典库的情况下构建一个简单的字典搜索程序。如果数组中的字符串等于char数组,我想搜索字符串数组。它应该打印字符串及其索引号。如果有两个字符串与字符匹配,那么它应该打印第一个字符串并保留后面的字符串

例如字符串数组[fine,rest,door,shine]字符['t','r','e','s']。答案应该是索引1。如果字符串rest是repeat,那么它应该只打印第一个

我试图比较字符串数组和字符数组,但它返回了字符串数组中与字符数组匹配的所有单词

String strArray[]=new String[4];
char chrArray[]=new char[4]; 
String value="";
char compare;
System.out.println("Enter the words :");
    for(int i=0;i<strArray.length;i++){
    strArray[i]=input.next();

    } 
    System.out.println("Enter the Characters :");
    for (int i = 0; i < chrArray.length; i++) {
        chrArray[i]=input.next().charAt(0);

    }

    for (int i = 0; i < strArray.length; i++) {
            if(strArray[i].length()==chrArray.length){
                 if(""+strArray[i]!=value){
               value="";
            }
        for (int j = 0; j < strArray[i].length(); j++) {

            for (int k = 0; k < chrArray.length; k++) {


                if(strArray[i].charAt(j)==chrArray[k]){
                value=value+strArray[i].charAt(j);   

                }
            }
            }
        }

}
        System.out.println(value);

输出应该是数组中等于char数组的字符串。

您可以对char数组进行排序,然后使用Arrays.equal对其进行比较。通过对字符数组进行排序,将不需要对循环使用2

String strArray[]=new String[4];
char chrArray[]=new char[4]; 
String value="";
char compare;
System.out.println("Enter the words :");
    for(int i=0;i<strArray.length;i++){
    strArray[i]=input.next();

    } 
    System.out.println("Enter the Characters :");
    for (int i = 0; i < chrArray.length; i++) {
        chrArray[i]=input.next().charAt(0);

    }

    for (int i = 0; i < strArray.length; i++) {
            if(strArray[i].length()==chrArray.length){
                 if(""+strArray[i]!=value){
               value="";
            }
        for (int j = 0; j < strArray[i].length(); j++) {

            for (int k = 0; k < chrArray.length; k++) {


                if(strArray[i].charAt(j)==chrArray[k]){
                value=value+strArray[i].charAt(j);   

                }
            }
            }
        }

}
        System.out.println(value);
import java.util.Arrays;
import java.util.Scanner;

public class Bug {

        public static void main(String[] args) {
            String strArray[]=new String[4];
            char chrArray[]=new char[4];
            Scanner input = new Scanner(System.in);
            System.out.println("Enter the words :");
            for(int i=0;i<strArray.length;i++){
                strArray[i]=input.next();

            }
            System.out.println("Enter the Characters :");
            for (int i = 0; i < chrArray.length; i++) {
                chrArray[i]=input.next().charAt(0);

            }
            Arrays.sort(chrArray);

            for (int i = 0; i < strArray.length; i++) {
                char[] x = strArray[i].toCharArray();
                Arrays.sort(x);
                if(Arrays.equals(chrArray, x))
                {
                    System.out.println(strArray[i]);
                    break;
                }
            }
        }

 }

您可以对字符数组进行排序,然后使用Arrays.equal对其进行比较。通过对字符数组进行排序,将不需要对循环使用2

import java.util.Arrays;
import java.util.Scanner;

public class Bug {

        public static void main(String[] args) {
            String strArray[]=new String[4];
            char chrArray[]=new char[4];
            Scanner input = new Scanner(System.in);
            System.out.println("Enter the words :");
            for(int i=0;i<strArray.length;i++){
                strArray[i]=input.next();

            }
            System.out.println("Enter the Characters :");
            for (int i = 0; i < chrArray.length; i++) {
                chrArray[i]=input.next().charAt(0);

            }
            Arrays.sort(chrArray);

            for (int i = 0; i < strArray.length; i++) {
                char[] x = strArray[i].toCharArray();
                Arrays.sort(x);
                if(Arrays.equals(chrArray, x))
                {
                    System.out.println(strArray[i]);
                    break;
                }
            }
        }

 }
您还可以创建一个映射来存储单词和字符的计数,并将每个单词的字符计数与字符计数进行比较。如果两者相等,则打印出来

演示:

您还可以创建一个映射来存储单词和字符的计数,并将每个单词的字符计数与字符计数进行比较。如果两者相等,则打印出来

演示:


如果+strArray[i]=值{不是比较字符串的正确方法。+是多余的,除非您希望strArray[i]为null,然后需要使用等于strArray[i].equalsvalue或Objects.equalsstrArray[i],如果您认为它可能为空,则为value。格式代码正确我是初学者,不知道我的代码是否正确,但如果有人编写此程序,我将非常感激。我想要的代码如上所述。if+strArray[i]!=value{不是比较字符串的正确方法。除非您期望strArray[i],否则+是多余的设置为null,然后需要使用等于strArray[i].equalsvalue或Objects.equalsstrArray[i],如果你认为它可能是空的话,请输入值。正确地格式化代码我是一个初学者,我不知道我的代码是否正确,但如果有人编写了这个程序,我将非常感激。我想要的代码如上所述。感谢你的代码,我已经尝试了两天了。上帝保佑你。很高兴能帮助你。欢迎@AliThanks u Mukesh提供你的代码,我是从两天开始尝试这个。上帝保佑你。很高兴帮助你。欢迎@Ali