Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 23

Найти ошибку в коде программы по замене символов в строке

04.03.2018, 20:33. Показов 1356. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пытался написать программу, которая в введенной пользователем строке заменяет все четные цифры на соответствующее количество знаков "+", нечетные цифры - на соответствующее количество знаков "-", а буквы "h" на слово "hello". Почти получилось, но с цифрами неправильно работает, заменяет их не на то количество минусов или плюсов. Помогите, пожалуйста, найти ошибку. Заранее благодарю.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package symbolschange;
 
import java.util.Scanner;
 
public class SymbolsChange {
    
    public static void main(String[] args) {
        System.out.print("Input the string: ");
        Scanner scan = new Scanner(System.in);
        String input = scan.nextLine();
        StringBuilder res = new StringBuilder("");
        char[] chr = input.toCharArray();
        for(int i = 0; i < chr.length; i++)
        {
            if(Character.isDigit(chr[i]))
            {
                if(chr[i] % 2 == 0)
                {
                    int counter1 = 0;
                    while(counter1 < chr[i])
                    {
                    res.append("+");
                    counter1++;
                    }
                }
                if(chr[i] % 2 != 0)
                {
                    int counter2 = 0;
                    while(counter2 < chr[i])
                    {
                        res.append("-");
                        counter2++;
                    }
                }
            }
            else
            {
                res.append(chr[i]);
            }
        }
        String finalResult = res.toString().replace("h", "hello");
        System.out.println("Result: " + finalResult);
    }
    
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.03.2018, 20:33
Ответы с готовыми решениями:

Программа по замене символов в строке
Здравствуйте! Нужно написать программу на языке java, которая в введенной пользователем строке заменяет все четные цифры на соответствующее...

Найти ошибку в коде программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

Найти ошибку в коде программы
Народ, посмотрите пожалуйста на код, оператор break не прекращает перебор вариантов case и выводит все варианты от введенного номера a. ...

7
 Аватар для robotcode
28 / 8 / 6
Регистрация: 20.09.2017
Сообщений: 133
04.03.2018, 20:47
Уже отвечали правильно, зачем 2-й раз спрашивать ?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
 
        System.out.print("Input the string: ");
 
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
 
        str = str.replace("h", "hello");
        str = str.replaceAll("[2,4,6,8]", "+");
        str = str.replaceAll("[1,3,5,7,9]", "-");
 
        System.out.println(str);
 
    }
}
0
25 / 25 / 31
Регистрация: 04.10.2016
Сообщений: 85
04.03.2018, 20:50
Лучший ответ Сообщение было отмечено Шмонько Богдан как решение

Решение

ошибка в 20 и в 29 строке почитай про тип char

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class Aviacompany {
    public static void main(String[] args) {
        System.out.print("Input the string: ");
        Scanner scan = new Scanner(System.in);
        
        String input = scan.nextLine();
        StringBuilder res = new StringBuilder("");
        char[] chr = input.toCharArray();
        for(int i = 0; i < chr.length; i++)
        {
            if(Character.isDigit(chr[i]))
            {
                int con = Integer.parseInt(""+chr[i]);
                if(chr[i] % 2 == 0)
                {
                    int counter1 = 0;
                    while(counter1 < con) {
                        String aass = ""+chr[i];
                    res.append("+");
                    counter1++;
                    }
                }
                if(chr[i] % 2 != 0)
                {
                    int counter2 = 0;
                    while(counter2 < con)
                    {
                        res.append("-");
                        counter2++;
                    }
                }
            }
            else
            {
                res.append(chr[i]);
            }
        }
        String finalResult = res.toString().replace("h", "hello");
        System.out.println("Result: " + finalResult);
    }
1
0 / 0 / 0
Регистрация: 17.02.2016
Сообщений: 23
04.03.2018, 21:03  [ТС]
Ваша программа заменяет цифру на плюс или минус, то есть "4" заменяет на "+", а в задании сказано заменить на соответствующее количество плюсов или минусов, то есть "4" должно заменить на "++++"
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
04.03.2018, 21:43
Цитата Сообщение от Tuxedo Mask Посмотреть сообщение
int con = Integer.parseInt(""+chr[i]);

Не по теме:

Наркоман, что ли? =)


Java
1
int con = chr[i] - '0';
Зачем вы всё усложняете? Решение буквально дословно записывается с условия.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
final class Replacer {
 
    public static void main(String[] args) {
        System.out.println(replaceWithMagic("are12hlj546hh"));
    }
 
    private static String replaceWithMagic(String s) {
        final StringBuilder result = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            final char c = s.charAt(i);
            if (c == 'h') {
                result.append("hello");
            } else if (c < '0' || c > '9') {
                result.append(c);
            } else {
                final int n = c - '0';
                final char replacer =  n % 2 == 0 ? '+' : '-';
                for (int k = 0; k < n; k++) {
                    result.append(replacer);
                }
            }
        }
        return result.toString();
    }
}
0
25 / 25 / 31
Регистрация: 04.10.2016
Сообщений: 85
04.03.2018, 21:52
korvin_, возможно
0
25 / 26 / 9
Регистрация: 14.03.2018
Сообщений: 74
16.03.2018, 07:12
Цитата Сообщение от korvin_ Посмотреть сообщение
Зачем вы всё усложняете? Решение буквально дословно записывается с условия.
Гений, зачем к месту и не к месту втыкать final в каждую дыру.
Да это оправданно для многопоточных приложений и в сложных дизайнах для улучшения читабельности дизайна.
Но здесь то какого, учебный пример, малюсенький статический метод и final. Ты еще synchronized воткни.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2774 / 491
Регистрация: 28.04.2012
Сообщений: 8,765
17.03.2018, 01:53
Цитата Сообщение от lakusnik Посмотреть сообщение
Гений, зачем к месту и не к месту втыкать final в каждую дыру.
А final тебя final это final напрягает final?

Цитата Сообщение от lakusnik Посмотреть сообщение
Но здесь то какого, учебный пример, малюсенький статический метод и final. Ты еще synchronized воткни.
synchronized тебе synchronized могу synchronized воткнуть synchronized и synchronized, если synchronized ты synchronized так synchronized хочешь synchronized, киса, synchronized.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2018, 01:53
Помогаю со студенческими работами здесь

Найти ошибку в коде программы
Сегодня начал изучать систему ввода-вывода в C# и тестируя методы столкнулся с небольшой проблемой(все видно на скрине) мой глупенький и...

Найти ошибку в коде подсчета слов в строке
В учебнике Б.В. Керниган дан код на подсчет слов #include &lt;stdio.h&gt; #define IN 1 /* внутри слова */ #define OUT 0 /* вне слова */...

Зацикливание программы, найти ошибку в коде
#define EE 1E-80 #define MAX_ROOTS 15 typedef struct { Complex root; int nor; // number of root int deg; // degree }...

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

Не могу найти ошибку в коде программы
Лабу задали, сам в программировании ничегошеньки вот уважаемые данный код ---------------------------- Public Sub...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru