Java for循环的字符替换方法问题

Java for循环的字符替换方法问题,java,string,for-loop,Java,String,For Loop,我正在尝试制作一种方法,用于比较两个字符串,并用星号替换并发字符,供初学者练习。 我相信已经有一些方法可以在String类或其他类中实现这一点,但是这个练习不允许我使用它们。 我试着用for循环来做。这是我的代码: public void substrings(){ System.out.println ("Insert string 1 and press Intro"); String string1 = sc.nextLine(); System.out.prin

我正在尝试制作一种方法,用于比较两个字符串,并用星号替换并发字符,供初学者练习。 我相信已经有一些方法可以在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();


}}
public void子字符串(){
System.out.println(“插入字符串1并按Intro”);
字符串string1=sc.nextLine();
System.out.println(“插入字符串2并按Intro”);
字符串string2=sc.nextLine();
弦乐大调;
弦乐小调;
如果(string1.length()>=string2.length()){
大调=弦1;
小调=弦2;
}
否则{
大调=弦2;
小调=弦1;
}
char[]replace=新字符[major.length()];
对于(int i=0;i
如果我将
five fingers
作为字符串1插入,将
five
作为字符串2插入,我将获得以下信息:
fiv*fing*rs

当我期待一些像
*****ng*rs


有人能告诉我我做错了什么吗?谢谢

使用
*

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");
for(int i=0;i
你永远不会打破内心的for循环。因此,当您的system.out.print(replace[I])将五个字母中的e与“五个手指”中的字母进行比较时,它始终具有该值


因此,我相信,只要点击else语句,您就会希望从内部for循环中断。

在Java 8中更容易:
string1.chars().mapToObj(e->String.valueOf((char)(string2.chars().anyMatch(e2->e==e2)?'*':e)).forEach(System.out::print)