我正在尝试一种比较两个字符串并将并发字符替换为星号的方法,供初学者练习。 我认为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();
}}
如果我将five fingers
插入为字符串1,并将five
插入为字符串2,则会获得以下信息:
fiv* fing*rs
当我期望像**** **ng*rs
有人可以告诉我我在做什么错吗?谢谢!
答案 0 :(得分:1)
用*
屏蔽后停止循环
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");
答案 1 :(得分:0)
您永远不会超出内部for循环。因此,当您将system.out.print(replace [I])与5中的e与“五个手指”中的字母进行比较时,始终具有该值。
因此,只要您碰到我相信的else语句,您就希望摆脱内部的for循环。