Java 字符串方法未提供正确的输出

Java 字符串方法未提供正确的输出,java,string,Java,String,所以我在解决一个编码网站上的问题,这个问题需要我替换?如果提供a或b,则没有两个连续的a。。。我已经尝试了很多,这是我写的代码。尽管据我所知,代码似乎是正确的,但每当我运行此代码时,输出与输入本身是相同的。没有对其进行任何更改 示例案例: 输入:?ababa?b? 输出:巴巴巴巴 输入:ababb?b 输出:ababab 输入必须是威瑟尔a、b或? 输出必须在字典中具有最高优先级 然而,无论我给出什么输入,我都得到相同的输出。如果我把?ab作为输入,我会得到与输出相同的结果,请帮助我 pac

所以我在解决一个编码网站上的问题,这个问题需要我替换?如果提供a或b,则没有两个连续的a。。。我已经尝试了很多,这是我写的代码。尽管据我所知,代码似乎是正确的,但每当我运行此代码时,输出与输入本身是相同的。没有对其进行任何更改

示例案例: 输入:?ababa?b? 输出:巴巴巴巴

输入:ababb?b 输出:ababab

输入必须是威瑟尔a、b或? 输出必须在字典中具有最高优先级

然而,无论我给出什么输入,我都得到相同的输出。如果我把?ab作为输入,我会得到与输出相同的结果,请帮助我

  package Beginner;

    import java.util.Scanner;

    public class ExplRuin {

        public static void main(String args[]){

            String s;

            Scanner in = new Scanner(System.in);

            s = in.nextLine();

            if(s.length()==1){

                if(s.equals("?"))
                    s.replace("?", "a");

            }   else
            {
                if(s.toString().startsWith("?")){
                    if(s.contains("?b"))
                        s.replace("?b","ab");
                    else
                        if(s.contains("?a"))
-                           s.replace("?a", "ba");  
                }
                if(s.endsWith("?")){
                    if(s.contains("a?"))
                        s.replace("a?", "ab");
                    else
                        if(s.contains("b?"))
                            s.replace("b?","ba");
                }
                if(s.contains("?a")||s.contains("a?")){
                    s.replace("?", "a");
                }
                else{
                    s.replace("?", "a");
                }       
            }
            System.out.print(s);
            }




        }

您必须将结果分配给变量,因为java中的字符串是不可变的:

s = s.replace("?", "a");
^^^---------------------------assign the result to your variable

String
是不可变的,因此必须像
s=s.replace(…)