如何检查字符串的两个索引以查看字符是否匹配

时间:2018-09-26 00:43:07

标签: java string charat

我正在尝试检查两个不同的索引以查看它们是否匹配。就我而言,我正在检查索引3和4。确定它们是否匹配是没有问题的,但是如果我的字符串太短并且在索引3或4处没有字符,我的程序将抛出异​​常。

这是我的代码的副本。谁能告诉我我在做什么错?

/**
 * Checks the characters in a String at indices 3 and 4 to see if those characters match
 * @param input String to check
 * @return "MATCH" if String's indices 3 and 4 have the same letter, "NO MATCH" if String's
 * indices 3 and 4 do not have the same letter, "N/A" if the String is too short to have a letter at index 3 or index 4
 */
private static String method4(String input) {

    Scanner scan = new Scanner(System.in);

    System.out.println("What is your word? ");
    input = scan.nextLine();
    int len = input.length();

    if (len < 4) {
        System.out.println("N/A");
    }
    else{
        char char1 = input.charAt(3);
        char char2 = input.charAt(4);
        if ((char1) == (char2)) {
        System.out.println("MATCH");
    }}
    else
    System.out.println("NO MATCH");

2 个答案:

答案 0 :(得分:0)

您使用charAt的方法从零开始,就像数组一样。

if (len < 4) {
    System.out.println("N/A");
}

仅确保该字符串至少包含4个字符,第四个具有索引3。

"abcd".charAt(3) == 'd'

因此,当字符串恰好具有4个字符时,input.charAt(4)将引发异常。

答案 1 :(得分:0)

try (Scanner scan = new Scanner(System.in)) {
    System.out.println("What is your word? ");
    String str = scan.nextLine();
    int len = str.length();

    if (len < 5)
        System.out.println("N/A");
    else if (str.charAt(3) == str.charAt(4))
        System.out.println("MATCH");
    else
        System.out.println("NO MATCH");
}

如其他帖子所述:

String str = "abcd";
str.legnth == 4
str.charAt(3) == 'd' // zero-based