我正在嘗試制作一個比較兩個字符串并用星號替換并發字符的方法,以供初學者練習。我認為在String類或其他類中已經存在一些方法來做到這一點,但該練習不允許我使用它們。我試圖用for循環來做到這一點。這是我的代碼:public void substrings(){ System.out.println ("Insert string 1 and press Intro"); String string1 = sc.nextLine(); System.out.println ("Insert string 2 and press Intro"); String string2 = sc.nextLine(); String major; String minor; if (string1.length() >= string2.length()){ major = string1; minor = string2; } else{ major = string2; minor = string1; } char[]replace = new char[major.length()]; for (int i = 0; i < major.length(); i++){ for (int j = 0; j < minor.length(); j++){ if (major.charAt(i) != minor.charAt(j)){ replace[i] = major.charAt(i); } else { replace[i] = '*'; } } System.out.print (replace[i]); } System.out.print ("\n");}public static void main (String[]args){ Substrings Test = new Substrings(); Test.substrings();}}如果我插入字符串1,并插入字符串2,我得到這些:five fingersfivefiv* fing*rs雖然我期待一些喜歡**** **ng*rs有人能告訴我我做錯了什么嗎?謝謝!!
2 回答

Helenr
TA貢獻1780條經驗 獲得超4個贊
用遮罩后停止循環*
for (int i = 0; i < major.length(); i++) {
for (int j = 0; j < minor.length(); j++) {
if (major.charAt(i) != minor.charAt(j)) {
replace[i] = major.charAt(i);
} else {
replace[i] = '*';
break; // here
}
}
System.out.print(replace[i]);
}
System.out.print("\n");

萬千封印
TA貢獻1891條經驗 獲得超3個贊
你永遠不會打破你內在的循環。因此,您的 system.out.print(替換 [I]) 在將 e 從五個與來自 “五個手指” 的字母進行比較時,始終具有該值
所以,每當你碰到我相信的其他東西時,你都會想要打破你內心的for-loop。
添加回答
舉報
0/150
提交
取消