跟输出样例一样,还是wrong。有用必采纳

img

import java.util.Scanner;

public class Main
{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()) {
            String a=in.nextLine();
            StringBuilder st=new StringBuilder(a);    
            int x=1;    
            while(in.hasNext()){
                String b=in.nextLine();
                if(b.charAt(0)=='E') {
                    System.out.println();
                    break;
                }

                if(b.charAt(0)=='S') {
                    int l=(int)(b.charAt(2)-'0');
                    int r=(int)(b.charAt(4)-'0');
                    char c=b.charAt(6);
                    for(int i=l-1;i<r;i++) {
                        st.setCharAt(i, c);
                    }
                    System.out.println(x+":"+st.toString());
                    x++;
                }
                if(b.charAt(0)=='T') {
                    char from=b.charAt(2);
                    char to=b.charAt(4);
                    for(int i=0;i<a.length();i++) {
                        if(st.charAt(i)==from)
                            st.setCharAt(i, to);
                    }
                    System.out.println(x+":"+st.toString());
                    x++;
                }
                
            }
        }
    }
}


int l=(int)(b.charAt(2)-'0');
int r=(int)(b.charAt(4)-'0');
你这只能适应S 2 4 C这种,但2和4可能是两位数啊,要是S 10 20 C你不就不行了么。还是要根据空格来拆分啊
允许输入的字符串长度不超过100,那么出现S 10 20 C这样的情况是很有可能的。给出的样例只是一个简单说明而已

if("END".equals(b)) 用字符串判断

import java.util.Scanner;
public class Main
{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()) {
            String a=in.nextLine();
            StringBuilder st=new StringBuilder(a);    
            int x=1;    
            while(in.hasNext()){
                String b=in.next();
                if("END".equals(b)) {
                    System.out.println();
                    break;
                }
 
                if(b.charAt(0)=='S') {
                    int l=(int)(b.charAt(2)-'0');
                    int r=(int)(b.charAt(4)-'0');
                    char c=b.charAt(6);
                    for(int i=l-1;i<r;i++) {
                        st.setCharAt(i, c);
                    }
                    System.out.println(x+":"+st.toString());
                    x++;
                }
                if(b.charAt(0)=='T') {
                    char from=b.charAt(2);
                    char to=b.charAt(4);
                    for(int i=0;i<a.length();i++) {
                        if(st.charAt(i)==from)
                            st.setCharAt(i, to);
                    }
                    System.out.println(x+":"+st.toString());
                    x++;
                }
                
            }
        }
    }
}

img

题在哪

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632