首页 > 解决方案 > 如何通过char数组搜索String数组?

问题描述

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

.eg String array["fine","re​​st","door","shine"] char 字符 ['t','r','e','s']。答案应该是索引 1 处的“休息”。如果字符串休息是重复的,那么它应该只打印第一个。

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

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 数组的字符串。

标签: javaarrays

解决方案


您可以对 char 数组进行排序,然后使用Arrays.equal. 通过对 char 数组进行排序,将无需使用 2 个 for 循环。

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;
                }
            }
        }

 }

推荐阅读