Метод replaceAll не работает для меня, что я делаю не так? - PullRequest
0 голосов
/ 08 февраля 2019

Я запускаю код, но он не заменяет строку1 на строку2

Я попытался прочесать сканеры, но это не сработало.Я попытался закрыть сканеры по отдельности, но в результате я получил синтаксическую ошибку.

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 ]

0 голосов
/ 08 февраля 2019
String replaceString = String3.replaceAll(String1,String2);

Измените это и напечатайте replacestring, вы получите ответ

0 голосов
/ 08 февраля 2019

Вам необходимо удалить кавычки из метода.Что происходит, так это поиск слова «String1» и, если он найдет указанное слово, он заменит его словом «String2».Удаление кавычек делает это так, что он будет искать ссылку на объект вместо фактического имени переменной.

Это: String replaceString=String3.replaceAll("String1", "String2");

Должно стать таким: String replaceString=String3.replaceAll(String1,String2);

0 голосов
/ 08 февраля 2019

Эта строка:

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

Должна быть заменена на:

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

В первой строке вы пытаетесь заменить само значение "String1" вместо использованияобъект.

0 голосов
/ 08 февраля 2019

Почему вы используете 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

0 голосов
/ 08 февраля 2019

Удалить двойные кавычки:

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

Пояснение :

Исходной строкой вы заменяете буквально словом Строка1 со словом Строка2 .Без двойных кавычек вы заменяете слово, хранящееся в переменной String1 (плохо), словом, хранящимся в переменной String2 (хорошо).Кстати, в соглашениях об именах Java указано, что переменные начинаются со строчной буквы - заглавные буквы используются для Классы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...