簡體   English   中英

Java程序讀取前綴和后綴

[英]Java Program reads prefix and suffix

我正在尋找一些代碼來讀取單個單詞的最后兩個字母和前兩個字母,看它們是否匹配。 單詞將始終為大寫。 這是我到目前為止的代碼,我很沮喪為什么這行不通! 很抱歉成為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轉換為字符數組-或要求通過使用子字符串創建任何新的String。

String str = scan.nextLine();
if((str.charAt(0) == str.charAt(str.length() - 2)) && (str.charAt(1) == str.charAt(str.length() - 1))){

另外,如果您的字符串少於2個字符,會發生什么? (您可能要檢查一下...)

您快到了-缺少的是從零開始對數組進行索引,因此數組中的最后一個元素為a [a.length-1],倒數第二個元素為a [a.length-2]

轉換為char數組實際上有點愚蠢。

String line = scan.nextLine();

if (line.substring(0,2).equals(line.substring(line.length() - 2)))
{
    // it matched ...
}

編輯:您會注意到我正在使用上述兩種形式的substring() 第一個采用開始和結束索引,而第二個僅采用開始索引並擴展到源String 請特別注意,兩個參數版本的第二個參數是所需子字符串之后的索引。

類字符串的布爾方法分別稱為startsWith-和endsWith。

http://docs.oracle.com/javase/8/docs/api/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM