首页 新闻 会员 周边

求助! PTA JAVA 7-4 单词替换 (20分) 不知道为什么总是有一个点过不去。

0
悬赏园豆:5 [待解决问题]

7-4 单词替换 (20分)
设计一个对字符串中的单词查找替换方法,实现对英文字符串中所有待替换单词的查找与替换。

输入格式:
首行输入母字符串,第二行输入查询的单词,第三行输入替换后的单词。

输出格式:
完成查找替换后的完整字符串

输入样例:
在这里给出一组输入。例如:

Although I am without you, I will always be ou you
ou
with

输出样例:
在这里给出相应的输出。例如:

Although I am without you, I will always be with you

以下是我的代码
import java.util.Scanner;
public class Main {
public static void main(String []args)
{
Scanner scan = new Scanner(System.in);
StringBuilder str = new StringBuilder();
int a = 0;
str = str.append(scan.nextLine());
String str1 = scan.nextLine();
String str2 = scan.nextLine();
do
{
if(str.indexOf(str1) == 0)
{
if(str.charAt(str1.length()) == ' ')
{
str = str.replace(0, str1.length(), str2);
}
System.out.println(str);
break;
}
else if(str.indexOf(str1) > 0)
{
a = str.indexOf(str1,a+1);
if((str.charAt(a-1)==' ') && ((a+str1.length())==str.length()))
{
str = str.replace(a, str1.length()+a, str2);
System.out.println(str);
break;
}
else if((str.charAt(a-1)==' ') && (str.charAt(a+str1.length())==' '))
{
str = str.replace(a, str1.length()+a, str2);
System.out.println(str);
break;
}

        }
        else
        {
            System.out.println(str);
            break;
        }
        
        
    }while(true);
}

}

axaxaxya的主页 axaxaxya | 初学一级 | 园豆:186
提问于:2020-03-03 22:17
< >
分享
所有回答(2)
-1

package com.solve;

import java.util.Scanner;

//字符串的查找并替换
public class SelectAndReplace {
public static void main(String[] args) {

    Scanner in1 = new Scanner(System.in);
    Scanner in2 = new Scanner(System.in);
    Scanner in3 = new Scanner(System.in);

    String sentence = in1.nextLine(); // 输入字符串
    String word1 = in2.next(); // 输入查找的单词
    String word2 = in3.next(); // 输入替换的单词
    StringBuilder sb = new StringBuilder();
    Boolean b1 = true, b2 = true;

    char[] Array1 = sentence.toCharArray(); // 转换成字符数组
    int at1 = sentence.indexOf(word1); // 单词在句中的的位置

    // 当将要替换的单词在第一个时
    if (at1 == 0 && (Array1[at1 + word1.length()] == ' ' || Array1[at1 + word1.length()] == ',')) {
        sb.append(word2);// 将word2放进去
        sb.append(sentence.substring(at1 + word1.length()));// 将Word1后面的加进去
        b1 = false; // 就不需要进while循环了
    }
    // 当要替换的单词在中间时
    while (b1) {
        char[] Array = sentence.toCharArray(); // 转换成字符数组
        int at = sentence.indexOf(word1); // 单词在句中的的位置
        if (at + word1.length() == sentence.length()) {
            break;
        }
        // 判断找到的第一个目标,查看他的前一位和它的后一位是否符合
        if (Array[at - 1] == ' ' && (Array[at + word1.length()] == ' ' || Array[at + word1.length()] == ',')) {
            sb.append(sentence.substring(0, at)); // 将Word1前的提出来
            sb.append(word2);// 将word2放进去
            sb.append(sentence.substring(at + word1.length()));// 将Word1后面的加进去
            b2 = false; // 就不需要判断最后一个单词了
            break;
        } else {// 如果不符合,将字符截断,前面的存入缓冲区,目标后面的字符串保留下来
            sb.append(sentence.substring(0, at + word1.length()));
            sentence = sentence.substring(at + word1.length());

        }
    }

    // 当要替换的单词在最后一个时
    if (b1 && b2) {
        sb.append(sentence.substring(0, sentence.length() - word1.length())); // 将Word1前的提出来
        sb.append(word2);// 将word2放进去
    }
    System.out.print(sb);
}

}

12赞 | 园豆:204 (菜鸟二级) | 2020-03-13 22:17
0

你那个点个去了么,我想请教一下,我的代码也总有一个点个不去,显示格式错误,可是我感觉没错误啊
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String string="";
while(in.hasNextLine()){
String s=in.nextLine();
if(s.equals("end")){
break;
}
else{
string=string+s;
}
}
String a=in.nextLine();
String b=in.nextLine();
System.out.println(string.replaceAll(a,b));
}
}

菜根花小宝贝 | 园豆:197 (初学一级) | 2020-04-12 16:37

我自己测出来了奥
给你参考一下我的代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String string="";
while(in.hasNextLine()){
String s=in.nextLine();
if(s.equals("end")){
break;
}
else{
string=string+s+"\n";
}
}
String a=in.nextLine();
String b=in.nextLine();
string.replaceAll("\n","");
System.out.print(string.replaceAll(a,b));
}
}

支持(0) 反对(0) 菜根花小宝贝 | 园豆:197 (初学一级) | 2020-04-13 10:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册