2017-08-15 32 views
1

例如,用戶類型:水果蘋果是我的最愛。 我想回來:水果*****是我的最愛。如果在數組中找到它,則替換字符串中的單詞

但我的代碼只返回第一個單詞。輸入的

public static void main(String[] args) { 
    System.out.print("Type someting: "); 
    Scanner scan = new Scanner(System.in); 
    String s = scan.next(); 

    String [] myArray = {"apple", "banana", "strawberry"}; 
    boolean matchFound = false; 

    for (int i = 0; i < myArray.length; i++) { 
     if (s.toLowerCase().contains(myArray[i].toLowerCase())){ 
      String beep = String.join("", Collections.nCopies(myArray[i].length(), "*")); 
      String result = s.replaceAll(myArray[i].toLowerCase(), beep); 
      System.out.println(result); 

      matchFound = true; 
     } 

    } 

    if (matchFound == false){ 
     System.out.println(s); 
    } 


} 
+0

如果找不到匹配項,爲什麼要打印? – Kayaman

回答

5

方式是不正確的

應該

String s = scan.nextLine(); 

而非scan.next();

With s = scan.next();

△只能得到初始化爲「」

+0

多麼簡單的解決方案。 :) 謝謝! – fucorogu

+0

你可以通過接受答案來感謝我:) –

0

還放了突破,一旦你發現的元素。當元素被找到時,這將確保從循環中出來並提高代碼性能。

matchFound = true; 
break; 
+0

其實我想檢查每個元素,如果發現改變(s)以及。 – fucorogu

+0

你是說'myArray'可以重複的水果?如果是,則不需要休息。如果不重複,那麼休息會很好。因爲如果你找到了一個元素,那麼下一次你不會得到它。 – nagendra547

+0

我的意思是如果用戶鍵入兩個或更多的單詞等於數組中的一個,那麼我想用*代替它們。 – fucorogu

相關問題