2017-09-03 98 views
-3
import.java.util.Scanner; 

public class Test{ 
    public static void main(String[] args){ 
    Scanner sc = new Scanner(System.in) 
    String operation = sc.nextLine(); 
    } 
} 

當我想查看,如果字符串操作包含某些字母,我可以編寫f.ex.Java檢查字符串是否包含特定範圍的某些字母,其中包含或等於方法

if(operation.contains("a") || operation.contains("b")){ 
     System.out.println("This is not a valid choice. Please retry!"); 
    } 

但是我想知道該寫什麼,如果該字符串包含字母,例如,從a到k。如果我用||寫入每一次,它都沒有效率。 編輯:我只允許使用方法contains和equals。

+2

這是一個家庭作業?否則解釋「允許使用」來自哪裏。 – lexicore

回答

2

嘗試使用正則表達式:

if (operation.matches(".*[a-k].*") { 
    ... 
} 

一種替代方案:

boolean contains = false; 
for (char charToCheck = 'a'; charToCheck <= 'k'; charToCheck++) { 
    if (operation.indexOf(charToCheck) >= 0) { 
     // found something 
     contains = true; 
     break; 
    } 
} 

更高版本的更新

哦,indexOf()是不允許的了。它使用嵌套循環一個版本:

boolean found = false; 
for (char ch : operation.toCharArray()) { 
    for (ch charToCheck = 'a'; charToCheck <= 'k'; charToCheck++) { 
     if (ch == charToCheck) { 
      found = true; 
      break; 
     } 
    } 
    if (found) { 
     break; 
    } 
} 
+0

有沒有其他選擇,因爲我不允許使用匹配方法? –

+0

@Java那麼,什麼是允許的? – Lothar

+0

我編輯了帖子。我只能使用equals或contains。 –

-1
char[] chars = operation.toCharArray(); 
for (int i = 0; i < chars.length; i++) { 
    char val = chars[i]; 
    switch(val) { 
     case a: 
     case b: 
     case c: 
     case d: 
     case e: 
     case f: 
     case g: 
     case h: 
     case i: 
     case j: 
     case k: 
      System.out.println("This is not a valid choice. Please retry!"); 
      break; 
    } 
} 
相關問題