Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 搜索字符数组以查看字符是否匹配_Java - Fatal编程技术网

Java 搜索字符数组以查看字符是否匹配

Java 搜索字符数组以查看字符是否匹配,java,Java,我有两个字符数组,以两个字符串作为输入。如果任意一侧的字符具有匹配的字符,例如,在将字符数组转换为字符串char A和char B后,它们都至少具有一个H或R,那么它将返回true。如果不是,则返回false >char[] A = foo(A).toCharArray(); > >char[] B = foo(B).toCharArray(); > >System.out.println("String "+A+": "+Arrays.toString(A));

我有两个字符数组,以两个字符串作为输入。如果任意一侧的字符具有匹配的字符,例如,在将字符数组转换为字符串char A和char B后,它们都至少具有一个H或R,那么它将返回true。如果不是,则返回false

>char[] A = foo(A).toCharArray();
>
>char[] B = foo(B).toCharArray();
>
>System.out.println("String "+A+": "+Arrays.toString(A));
>
>System.out.println("String "+B+": "+Arrays.toString(B));

>String A: [H,  , R,  ]
>
>String B: [R,  , R, R]
>>This will return true

>String A: [ , H,  , R]
>
>String B: [H, H,  , H]
>>This will return true

>String A: [H,  , H,  ]
>
>String B: [R,  , R,  ]
>>This will return false

我不知道如何制定这样的规则?

您可以使用For在矩阵中迭代,并验证当前项是“R”还是“H”

boolean returnedValue=false;
for(int i=0;i返回值
您可以在这里使用
java.util.Set
,它将在一次迭代中给出结果。使用
java.util.TreeSet
进一步减少执行时间,因为它消除了重复项

public static void main(String[] args) {
    char[] A = "HR".toCharArray();
    char[] B = "RRR".toCharArray();

    Set<Character> set = new TreeSet<>();
    boolean flag = false;
    for(char c : A) {
        set.add(c);
    }
    for(char c : B) {
        if(set.contains(c)) {
            System.out.println(true);
            flag = true;
            break;
        }
    }
    if(!flag) {
        System.out.println(false);
    }
}
publicstaticvoidmain(字符串[]args){
char[]A=“HR”。toCharArray();
char[]B=“RRR”。toCharArray();
Set=新树集();
布尔标志=假;
用于(字符c:A){
增加(c);
}
用于(字符c:B){
如果(集合包含(c)){
System.out.println(真);
flag=true;
打破
}
}
如果(!标志){
System.out.println(假);
}
}

使用第一个循环从第一个数组中获取每个元素

使用第二个循环检查第二个数组中的第一个元素

检查第一个数组中的当前值是否等于H或R

如果是,请检查它是否在第二个数组中,并返回true

public static boolean check() {
        String s1 = "ABHEEF", s2 = "RDDFVW";
        char[] arr1 = s1.toCharArray();
        char[] arr2 = s2.toCharArray();

        for (int i = 0; i < arr1.length; i++) {
            for (int j = 0; j < arr2.length; j++) {
                if(arr1[i] == 'H' || arr1[i] == 'R') {
                    if(arr1[i] == arr2[j])
                        return true;
                }

            }
        }
        return false;
    }
公共静态布尔检查(){
字符串s1=“ABHEEF”,s2=“RDDFVW”;
char[]arr1=s1.toCharArray();
char[]arr2=s2.toCharArray();
for(int i=0;i
很简单,只需添加一个嵌套循环即可

for(int i = 0; i < A.length; i++){
      for(int j = 0; j < B.length; j++){
             if(if B[j] ==A [i]){
                  return true
             }
      }
}

        return false;
for(int i=0;i
使用Java 1.8,您可以执行以下操作:

//@Momir Sarac
String text1 = "b9H ello";
String text2 ="avn1c fk";
// 32 is for empty space character here, you could do i != ' ' and it would be the same
//turn text1 into intstream each int corresponding to it's char value
//filter empty space ints
//get only distinct out of them
//take a look for any match if some int is contained within text2
boolean result = text1.chars().filter(i->i != 32).distinct().anyMatch(character->text2.contains(String.valueOf(character)) || text2.lastIndexOf(character) != -1);
//print it on screen
System.out.printf("Two texts %s same letter(s).", result ? "have" : "don't have");

匹配的字符是否作为输入?或者是第一个数组中的任何字符?第一个数组在哪里?您只检查第二个数组中是否有“H”或“R”。