Форум программистов, компьютерный форум, киберфорум
Наши страницы
InvalidCode
Войти
Регистрация
Восстановить пароль
Очень часто в разделах форума попадаются одинаковые по своей сути вопросы. Поэтому я решил собрать здесь все возможные варианты решения самых ходовых (ну и не очень) вопросов.
Оценить эту запись

Задача 1 из сайта https://erudyt.net

Запись от InvalidCode размещена 15.05.2018 в 12:14
Обновил(-а) InvalidCode 15.05.2018 в 12:25 (подсказали более простой вариант)

Условие задания:
Цитата:
Мегапопулярний Дзідзьо дуже любить складати мегапопулярні пісні. Запис його пісень є специфічним: він записує усі слова своєї пісні без пропусків та розділових знаків у єдину стрічку.
Одного разу, переглядаючи текст пісні, Дзідзьо видалив один символ з неї і помітив, що пісня стала зовсім іншою. Допитливому Дзідзю стало цікаво, скільки різних пісень може утворитись із заданої, якщо видалити з неї тільки один символ. Але Дзідзьо не має часу для того, щоб це рахувати. Допоможіть йому, напишіть для цього програму.
Вхідні дані
У першому і єдиному рядку задано стрічку У. Вона складається тільки з малих літер англій-ського алфавіту (а - г).
Вихідні дані
Виведіть єдине число — відповідь на задачу.
Обмеження
2 <|S|< 100, де |S| — довжина стрічки S.
Приклади
Вхідні дані (stdin) Вихідні дані (stdout)
abc 3


Примітки
У першому прикладі, зі стрічки abc може утворитись 3 різні стрічки, якщо з неї видалити один символ: Ьс, ас, ab.
мои модификации к заданию:
1. - при вводе строки неверной длины(<2 || > 100), генерировать исключение, вывести сообщение об ошибке, и продолжить работу програмы.
2. при вводе больших букв генерируем исключение, выводим ошибку, продолжаем роботу программы.
3. выввести все варианты строк.

По своей сути это задание, без модификаций сводиться к тому, что-бы получить из стандартного вводного потока строку, и вывести в консоль длину строку. убирая из строки лишь один символ, количество вариантов строк будет равно длине этой строки:
Решение исходного задания(без модификаций)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package dzz;
 
import java.util.Scanner;
 
/**
 * @author i++
 */
public class Dzz {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("ВВедіть строку тупої дзідзьовської пісьні");
        String s = sc.nextLine();
        System.out.println(s.length());
    }
    
}
проверяем длину строки:
Java
1
2
3
4
5
    private static void lengthCorekt(int length) throws LengthException {
        if(length < 2 || length > 100){
            throw new LengthException(length);
        }
    }
клас генерируемого исключения
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
    private static class LengthException extends Exception{
        private String s;
 
        public LengthException(int i) {
            s = "LengthException>> Введена строка ";
            s += i < 2 ? "менша 2" : "бiльшa 100";
        }
        
        @Override
        public String toString(){
            return s;
        }
    }
Проверяем коректность строки
Java
1
2
3
    private static void paternString(String s) throws AncorectStringException{
        if (!s.matches("[a-z]+")) throw new AncorectStringException();
    }
выводим варианты строк
Java
1
2
3
4
5
6
7
8
9
    private static void autVariable(String s) {
        for(int i = 0; i < s.length(); i++){
            System.out.println(i + ". " + cut(s, i));//вырезаем символ из строки и печатаем строку
        }
    }
 
    private static String cut(String s, int i) {
        return i == 0 ? s.substring(1) : i == s.length() - 1 ? s.substring(0, i) : s.substring(0, i) + s.substring(i + 1);
    }
вся программа целиком(в одном класе)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package dzz;
 
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/**
 * @author i++
 */
public class Dzz {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("ВВедіть строку тупої дзідзьовської пісьні");
        boolean yes = true;
        while(yes){
            String s = sc.nextLine();
            try{
                lengthCorekt(s.length());//проверяем длину строки
                paternString(s);//проверяем коректность строки
                System.out.println(s.length());
                autVariable(s);//выводим варианты строк
                yes = false;
            }catch(LengthException e){
                System.err.println(e.toString());
                System.out.println("Введіть єньчу строку тупої дзідзьовської пісьні");
            } catch (AncorectStringException ex) {
                System.err.println(ex.toString());
                System.out.println("Введіть єньчу строку тупої дзідзьовської пісьні");
            }
        }
    }
 
    private static void lengthCorekt(int length) throws LengthException {
        if(length < 2 || length > 100){
            throw new LengthException(length);
        }
    }
 
    private static void paternString(String s) throws AncorectStringException{
        if (!s.matches("[a-z]+")) throw new AncorectStringException();
    }
 
    private static void autVariable(String s) {
        for(int i = 0; i < s.length(); i++){
            System.out.println(i + ". " + cut(s, i));//вырезаем символ из строки и печатаем строку
        }
    }
 
    private static String cut(String s, int i) {
        return i == 0 ? s.substring(1) : i == s.length() - 1 ? s.substring(0, i) : s.substring(0, i) + s.substring(i + 1);
    }
 
    private static class LengthException extends Exception{
        private String s;
 
        public LengthException(int i) {
            s = "LengthException>> Введена строка ";
            s += i < 2 ? "менша 2" : "бiльшa 100";
        }
        
        @Override
        public String toString(){
            return s;
        }
    }
 
    private static class AncorectStringException extends Exception {
        private String s;
 
        public AncorectStringException() {
            s = "AncorectStringException";
        }
        
        @Override
        public String toString(){
            return s;
        }
    }
    
}
результат роботы программы:
Цитата:
ВВедіть строку тупої дзідзьовської пісьні
asdD
AncorectStringException>> Знайдено велику літеру
Введіть єньчу строку тупої дзідзьовської пісьні
a
LengthException>> Введена строка менша 2
Введіть єньчу строку тупої дзідзьовської пісьні
asdsm,afndgjkhstrjkghjktrhg trguitrhguierhwtuiheruigthtruigherugheruihgterjghjkserhgserjkhggjklhgjkrhgjkdfnhgjdfksngjkldfngvjkdfsngbvkldjsfngbkldfjn bgjkldfnbgkldfnbvgkldfnbvdfjklnbvdfjklnbkjldfn
LengthException>> Введена строка бiльшa 100
Введіть єньчу строку тупої дзідзьовської пісьні
asderfgff
9
0. sderfgff
1. aderfgff
2. aserfgff
3. asdrfgff
4. asdefgff
5. asdergff
6. asderfff
7. asderfgf
8. asderfgf
Просмотров 318 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru