Задача Electronic message

Здравейте,

Имам проблем със задача Electronic message, понеже пробвах различни начини, но винаги case 7 не минава.
Това е кодът, който пробвах последно : link
Благодаря предварително.

Здравей,
Ако помня добре в задачата не се ли казваше, че трябва да се игнорира ако символът е точка?

Здравей,

Самият цикъл се завърта с 1 по-малко за да се прескочи тази точка.

Привет!
Къде може да видя условието на задачата?

Не зная условието на задачата, но, цикълът на ред 13, май, не хваща последния елемент от bord1…

Здравейте,

Успях да открия грешката си. Проблемът беше, че когато има спейс не ресетвах брояча на счупените символи, но въпреки това само този тест даваше грешка по този начин и беше странно.

Здравейте, извинявам се, че пиша в същата тема, но става дума за същата задача. Дава ми 70 точки и това е… Моля за малко съдействие, къде ми е грешката. Ето го кода ми:

import java.util.Scanner;

public class Electronicmessage {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

    String [] words = scanner.nextLine().split(" ");
    int countSymbols = 0;
    int maxBadSymbols = Integer.MIN_VALUE;

    for (int i = 0; i < words.length; i++) {
        char [] chars = words [i].toCharArray();
        countSymbols = 0;
        for (int j = 0; j < chars.length; j++) {
            boolean isLeterOrDigit = Character.isLetterOrDigit(chars[j]);
            if(chars[j]=='.'){
                break;
            }
            else if (!isLeterOrDigit) {
                countSymbols++;
            }
        }
        if (countSymbols > maxBadSymbols) {
            maxBadSymbols = countSymbols;
        }
    }
    System.out.print(maxBadSymbols);
}

}

Здравейте,

И аз от вчера я мъча тази задача. Дава ми 90 точки, но ми гърми във втория случай? Някой има ли идея защо - ElectronicMessage - Pastebin.com?

Здравейте,
И аз имам проблем само с един test case.
Ще съм благодарен за идеи.
Ето и моя код ElectronicMessage - Pastebin.com

Здравей,
ползваш 2 различни валидации за текущия ch и вероятно изтърваш някой “специален символ” тук:
String specialCharactersString = "!@#$%^&*()_+-=><?";
(примерно { , } , [ , ] , и запетайката май и тя е към тези) .

Можеш да го опростиш на (може и пак с регекси, ест)

if (ch != буква && ch !=число && ch != space/точка) {
tempcounter++;
counter update logic..
}
else {
tempcounter = 0;
}

Успех!:slight_smile:

2 Likes

Благодаря! :slight_smile:

Здравей,
не нулираш брояча на правилното място.
Пробвай да дебъгнеш с примерен вход

%%%123##.

Който би трябвало да изкара аутпут 3, но изкарва 5.

Успех! :slight_smile:

3 Likes

Здравей,
не ъпдейтваш правилно най-дългата поредица (параметъра ти sequence).
Пробвай с примерен инпут:
a? b???.

който би трябвало да изкара аутпут 3, а не 1.
Успех :slight_smile:

2 Likes

Здравейте,

Пускам и моето решение на задачата. Може да подсети някоя идея. import java.util.Scanner;public class Exercise2 { public static void ma - Pastebin.com

Поздрави И.Минков

Здравей,
предполагам, че и ти изтърваш няколко спциални символа (примерно:
47 /
123 {
124 |
125 }
126 ~

Така, че вход

Temperatu// low.
при теб би изкарал 0, а не 2.

Според мен, вместо изключването на специални символи с риска да се изпусне някой, е много по-лесно да се провери дали текущият символ е цифра/буква - има си готови методи:
java.lang.Character.isLetter(char ch)
(Java.lang.Character.isLetter() Method)
java.lang.Character.isDigit(char ch)
(Character isDigit() method in Java with examples - GeeksforGeeks

също и регекси (Regular expressions, примерно https://www.baeldung.com/regular-expressions-java
, но има още адски много документация), където може да се включи и спейс и точка (вместо изрично да се проверява и за тях) и изобщо всичко, което трябва да се проверява за дадения случай :slight_smile:

Успех! :slight_smile:

2 Likes

Здравейте 3 case-a не ми минават …
Изключил съм всички букви и цифри а горе в масива сплитвам по 1 или повече спейсове, за да си гарантирам, че няма да ги срещам ?

Ако някой ме насочи, ще съм много благодарен :slight_smile:

Направи дебъг с ???123##. и виж къде е грешката. При този тест изкарва 5 вместо 3. При мен също гърмеше на 3 теста, но в един от отговорите на @denski.bg имаше такъв примерен инпут, в който и при мен печатеше 5,а не 3.

Кой от символите трябва да skip- на , не ми става ясно, защото в задачата пише всички символи без букви, цифри и спейсове
“Tempera#### na @#$ata 23 grad#%&.” → ето това е примерния инпут, чийто отговор е 4

update : май открих къде гърми, сега ще видя

Сложи counter = 0 в условието, в което проверяваш за специални символи
, за да занулява counter-a ,когато срещне буква или цифра и си решаваш проблема.
if (currentSymbol >= 48 && currentSymbol <= 57
|| currentSymbol >= 65 && currentSymbol <= 90
|| currentSymbol >= 97 && currentSymbol <= 122) {
counter = 0;

            } else {
                counter++;
            }
            if(counter > maxNum){
                maxNum = counter;
            }

Да да да… аз взимах дадена дума и търсих всички символи в нея а не най-дългата поредица.
Благодаря :slight_smile:

1 Like