有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java的replaceAll方法对我不起作用我做错了什么?

我运行了代码,但它没有用string2替换string1

我试着梳理扫描仪,但没用。我试图单独关闭扫描仪,但结果当然是语法错误

import java.util.*;
public class Remove_and_Replace {
public static void main(String []args) {
      Scanner a = new Scanner(System.in);
      System.out.println("Enter your first word:");
      String String1 = a.nextLine();
      Scanner b = new Scanner(System.in);
      System.out.println("Enter your second word:");
      String String2 = b.nextLine();
      Scanner c = new Scanner(System.in);
      System.out.println("Enter your sentence:");
      String String3 = c.nextLine();
      c.close();

      String replaceString=String3.replaceAll("String1","String2");
     System.out.println(replaceString); 
    }
}

预期结果:

Enter your first word:
bad
Enter your second word:
good
Enter your sentence:
I am always bad.
I am always good.

实际结果:

Enter your first word:
bad
Enter your second word:
good
Enter your sentence:
I am always bad.
I am always bad.

共 (5) 个答案

  1. # 1 楼答案

    您需要从方法中删除引号。结果是它正在寻找一个单词“String1”,如果它找到了所说的单词,它将用单词“String2”替换它。删除引号会使它查找对象的引用,而不是实际的变量名

    这个:String replaceString=String3.replaceAll("String1", "String2");

    应该变成这样:String replaceString=String3.replaceAll(String1,String2);

  2. # 2 楼答案

    这一行:

    String replaceString=String3.replaceAll("String1","String2");
    

    应替换为:

    String replaceString=String3.replaceAll(String1, String2);
    

    在第一行中,您试图替换值“String1”本身,而不是使用对象

  3. # 3 楼答案

    删除双引号:

      String replaceString=String3.replaceAll(String1, String2);
    

    解释

    使用原始行,您将用单词String2替换字面上的单词String1。如果没有双引号,则将存储在String1变量(bad)中的单词替换为存储在String2变量(good)中的单词。另一方面,Java命名约定指定变量以小写字母开头,大写字母用于

  4. # 4 楼答案

    String replaceString = String3.replaceAll(String1,String2);
    

    像这样改变并打印替换字符串,你会得到答案

  5. # 5 楼答案

    为什么在引号中使用String1和String2

    替换这个:

      String replaceString=String3.replaceAll("String1","String2");
    

    有了这个:

      String replaceString=String3.replaceAll(String1,String2);
    

    顺便说一句,根据命名惯例,变量的命名总是以小写字母开头。所以它应该看起来像:

    public static void main(String[] args) {
        Scanner a = new Scanner(System.in);
        System.out.println("Enter your first word:");
        String firstWord = a.nextLine();
        Scanner b = new Scanner(System.in);
        System.out.println("Enter your second word:");
        String secondWord = b.nextLine();
        Scanner c = new Scanner(System.in);
        System.out.println("Enter your sentence:");
        String sentence = c.nextLine();
        c.close();
    
        String updatedSentence = sentence.replaceAll(firstWord, secondWord);
        System.out.println(updatedSentence);
    }
    

    你可以在这里阅读更多内容:https://www.javatpoint.com/java-naming-conventions