我正在尝试检查两个不同的索引以查看它们是否匹配。就我而言,我正在检查索引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");
答案 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