gpt4 book ai didi

java - Java 中的字符串字谜

转载 作者:行者123 更新时间:2023-12-02 01:01:30 27 4
gpt4 key购买 nike

我正在尝试创建一个遵循以下条件的字符串字谜程序:

  1. 方法应该只允许字母、空格、逗号和点在字谜中。如果有任何其他字符,则该字符串不能包含字谜。
  2. 该方法在检查文本时应忽略所有空格、逗号和点。
  3. 如果文本中没有字母,则该文本不可能是字谜词。
import java.util.Arrays;
import java.util.Scanner;

public class StringAnagram {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);

System.out.print("Enter first string: ");
String first = in.nextLine().toUpperCase();


System.out.print("Enter second string: ");
String second = in.nextLine().toUpperCase();

String result = isAnagram(first, second);
System.out.println(result);
}

private static String isAnagram(String first, String second) {
String answer = "";


if (first.matches("[A-Z\\.\\,\\s]")) {
String st = first.replaceAll("\\.\\,\\s", "");
String nd = second.replaceAll("\\.\\,\\s", "");
char[] arraySt = st.toCharArray();
char[] arrayNd = nd.toCharArray();
Arrays.sort(arraySt);
Arrays.sort(arrayNd);

if(Arrays.equals(arraySt, arrayNd)) {
answer = "Anagram.";
}

else {
answer = "No anagram.";
}
}

else {
answer = "No anagram.";
}
return answer;
}
}

然而,当程序测试这两个句子时,它们不是字谜,但它们应该是字谜。我不知道在哪里寻找错误。

  1. 十一加二等于十三。
  2. 十二加一等于十三。

最佳答案

如果您按如下方式启动方法,它将满足问题的1st3rd 点中提到的验证:

if (first == null || second == null || first.equals("") || second.equals("") || !first.matches("[A-Za-z,. ]+")
|| !second.matches("[A-Za-z,. ]+")) {
return "No anagram.";
}

接下来您应该做的是将所有空格、逗号和点替换为 "" 以忽略它们:

String st = first.replaceAll("[,. ]+", "");
String nd = second.replaceAll("[,. ]+", "");

完整代码如下:

private static String isAnagram(String first, String second) {
if (first == null || second == null || first.equals("") || second.equals("") || !first.matches("[A-Za-z,. ]+")
|| !second.matches("[A-Za-z,. ]+")) {
return "No anagram.";
}
String answer = "";

String st = first.replaceAll("[,. ]+", "");
String nd = second.replaceAll("[,. ]+", "");

if (st.equals("") || nd.equals("")) {
return "No anagram.";
}

char[] arraySt = st.toCharArray();
char[] arrayNd = nd.toCharArray();
Arrays.sort(arraySt);
Arrays.sort(arrayNd);

if (Arrays.equals(arraySt, arrayNd)) {
answer = "Anagram.";
} else {
answer = "No anagram.";
}
return answer;
}

测试运行:

Enter first string: london
Enter second string: britain
No anagram.

另一次测试运行:

Enter first string: ram
Enter second string: mar
Anagram.

另一次测试运行:

Enter first string: .
Enter second string: .
No anagram.

另一次测试运行:

Enter first string: ,
Enter second string: .
No anagram.

另一次测试运行:

Enter first string: ra.m
Enter second string: a.m.r
Anagram.

关于java - Java 中的字符串字谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60582787/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com