我正在寻找一些代码来读取单个单词的最后两个字母和前两个字母,并查看它们是否匹配。这些单词将始终为大写。这是我到目前为止的代码,我很沮丧为什么这不起作用!抱歉,我是一名 n00b :)
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
String s;
char[] a;
int input=scan.nextInt();
scan.nextLine();
for(int i=0; i<input; i++){
a = scan.nextLine().toCharArray();
if((a[0] == a[a.length -1]) && (a[1] == a[a.length])){
System.out.println("MATCH");
}else{
System.out.println("DO NOT MATCH");
}
}
}
}
我做的第一件事是一个 FOR 语句,如果你想知道它运行了多少次......
最佳答案
尝试替换这个:
if((a[0] == a[a.length -1]) && (a[1] == a[a.length])){
这样:
if((a[0] == a[a.length - 2]) && (a[1] == a[a.length - 1])){
Java 中的数组是从 0 开始的,因此最后一个元素实际上是 .length - 1
。 (长度为 3 的数组将具有有效索引 [0, 1, 2]
- 而不是 [1, 2, 3]
。)
编辑: 然而,由于 Brian 此后提高了赌注:我会提出一个更好的方案,它不需要将字符串转换为字符数组 - 或需要通过使用子字符串创建任何新的字符串。
String str = scan.nextLine();
if((str.charAt(0) == str.charAt(str.length() - 2)) && (str.charAt(1) == str.charAt(str.length() - 1))){
<小时/>
此外,如果您的字符串少于 2 个字符,会发生什么情况? (您可能想检查一下...)
关于Java程序读取前缀和后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9011928/