Member 13954890 Ответов: 3

Как напечатать строку после замены ее первого вхождения искомого символа другим?


public class Rep
{
      public static void main(String args[])
     {
          Scanner s=new Scanner(System.in);
          int flag=0,p=0;
          String sen="java program";
          System.out.println("Enter the character to be searched");
          char search=s.next().charAt(0);
          System.out.println("Enter the replacement char");
          char replace=s.next().charAt(0);
          char ch[]=sen.toCharArray();
          for(int i=0;i<ch.length;i++)
{
if(search==ch[i])
p=i;
flag=1;
break;
}
if(flag==1)
ch[p]=replace;
system.out.println(ch.tostring()); it's="" showing="" some="" garbage="" value
}
else
system.out.println("character="" not="" found");
}
}


Что я уже пробовал:

Системы.из.код println(гл. метод toString());

Вместо того чтобы печатать результат, он показывает какое-то мусорное значение. Как это исправить.

3 Ответов

Рейтинг:
1

Minh Tuan Do

Как насчет этого?

if(sen.indexOf(search) != -1){
    string result = sen.substring(0, sen.indexOf(search) + 1).replace(search, replace);
    System.out.println(result);
}
else{
    System.out.println("character not found");
}


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


Рейтинг:
1

OriginalGriff

Это не тот код: он не компилируется, потому что else клаузула находится вне тела статьи. main метод.
И

system.out.println("character="" not="" found");
Это тоже не действует.
Кроме того, "система" - это не то же самое, что "система".

То, что вы запускаете, - это не тот код: это последняя версия, которая компилировалась, и как это выглядело, мы понятия не имеем, и, вероятно, вы тоже не знаете...

Попробовать это:
public static void main (String args[]){
    Scanner s = new Scanner (System.in);
    int flag = 0, p = 0;
    String sen = "java program";
    System.out.println ("Enter the character to be searched");
    char search = s.next().charAt(0);
    System.out.println ("Enter the replacement char");
    char replace = s.next().charAt (0);
    char ch[] = sen.toCharArray();
    for (int i = 0; i < ch.length; i++){
	if (search == ch[i]){
	    p = i;
	    flag = 1;
	    break;
        }
    }
    if (flag == 1){
        ch[p] = replace;
        System.out.println (new String (ch));
    }
    else {
        System.out.println ("character " + search + " not found");
    }
}


Member 13954890

Да, это сработало :D большое спасибо, но почему он выбрасывает мусорное значение при преобразовании символьного массива(т. е. ch) в строку с помощью toString()?

Рейтинг:
0

Patrice T

Прежде всего, когда вы добавляете комментарий, сделайте его комментарием

system.out.println(ch.tostring()); // it's="" showing="" some="" garbage="" value

-----
Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
Ваше если в конце концов это беспорядок:
public class Rep
{
    public static void main(String args[])
    {
        Scanner s=new Scanner(System.in);
        int flag=0,p=0;
        String sen="java program";
        System.out.println("Enter the character to be searched");
        char search=s.next().charAt(0);
        System.out.println("Enter the replacement char");
        char replace=s.next().charAt(0);
        char ch[]=sen.toCharArray();
        for(int i=0;i<ch.length;i++)
        {
            if(search==ch[i])
            p=i;
            flag=1;
            break;
        }
        if(flag==1)
            ch[p]=replace;
        system.out.println(ch.tostring()); // it's="" showing="" some="" garbage="" value
    }
    else
        system.out.println("character="" not="" found");
}
}

Стиль отступа - Википедия[^]

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]
Цитата:
Вместо того чтобы печатать результат, он показывает какое-то мусорное значение. Как это исправить.

Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.