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