2015-10-06 86 views
0

例如,我會從用戶那裏得到一個未指定數量字符的輸入並將它們添加到一個字符串中,然後我使用if input1.toLowerCase().startsWith(input2.toLowerCase()))來檢測這兩個字符串的第一部分是否相同。在這種情況下,input1input2都是用掃描儀拾取的字符串。如何獲取Java中的一部分字符串並打印出來?

如何打印每個字符串的相同部分?

例如,如果我輸入「大家好,我的名字是」爲input1和「大家好,我的名字」爲input2,它應該輸出「嗨,我的名字」

編輯:爲了澄清,我轉換字符串爲小寫和然後嘗試比較兩個與startsWith外殼不會在這個問題無關緊要

+1

你只需要打印輸入2,因爲這是兩者之間的共同點,因爲你的條件使用了startsWith()。 –

回答

2

從兩個字符串找到最大的起始字符串,則需要單獨測試每一個字符:

int i; 
for (i = 0; i < str1.length() && i < str2.length() && str1.charAt(i) == str2.charAt(i); i++); 
String common = str1.substring(0, i); 
+0

好吧,這實際上大部分工作_except_當第一個字符串比第二個字符串長(它敲掉一個字母)。我實際上可以抵消它來修復它,但它爲什麼這樣做呢? –

+1

@ Nero-One(錯誤更正 - 請參閱最新編輯)適用於我:如果我設置了'String str1 =「abcde」; String str2 =「abc」;'result是'「abc」' – Bohemian

0

你的邏輯應該以這種方式流:

  • 首先檢查是否輸入1和輸入2是相同的
  • 然後檢查輸入1 startsWith輸入2
    • 如果爲真,然後打印輸入2
    • 否則,檢查是否它周圍的其他方法(輸入2 startsWith輸入1)
      • 如果爲真,那麼你就應該打印輸入1

嘗試創建此代碼自己 - 它的學習編碼的最好方法:試驗和錯誤!請記住,這是軟件編程 - 當遇到Java編譯器錯誤時,沒有任何東西會炸燬。

相關問題