Java程序读取前缀和后缀

标签 java string char

我正在寻找一些代码来读取单个单词的最后两个字母和前两个字母,并查看它们是否匹配。这些单词将始终为大写。这是我到目前为止的代码,我很沮丧为什么这不起作用!抱歉,我是一名 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/

相关文章:

java - 修改静态数组中的 String 对象

string - AWK:将字符串分成几部分

c - 如何在 C 中将 char 数组 case [0] 和 [1] 连接到 char 指针?

c - 为什么 Objective-C Boolean 数据类型定义为 signed char?

java - LastIndexOf函数用法

Java 耦合 - 我应该跨不同模块依赖服务层还是存储库层?

C 字符串问题。输入整数N和字符串,我想打印第N个位置的字符。 (如果 N>strlen(str))

java - 什么是NullPointerException,我该如何解决?

java - 从重复的排序列表中查找小于或等于 X

c - 在C中,如何将两个char数组中的两个char字符存储到整数数组中