1. Java / Говнокод #13901

    +69

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    package first;
    
    import java.util.Scanner;
    
    public class First {
    
    	public static void main(String[] args) {
    
    		String line = "Empty directories can be moved. If the directory is not empty,";
    
    		System.out.println("Enter simbol to delete:");
    		Scanner s = new Scanner(System.in);
    		String del = s.nextLine();
    		s.close();
    
    		StringBuilder sb = new StringBuilder(line);
    		for (int i = 0; i < sb.length(); i++) {
    			if (sb.charAt(i) == del.charAt(0)) {
    				sb.deleteCharAt(i);
    				
    			}
    		}
    
    		System.out.println(sb);
    	}
    
    }

    Это из раннего. Давно что-то не выкладывал, вот руки зачесались.

    Запостил: spivti, 06 Октября 2013

    Комментарии (10) RSS

    • > simbol
      Сымвол ;)
      -StringBuilder sb = new StringBuilder(line);
      -for (int i = 0; i < sb.length(); i++) {
      -    if (sb.charAt(i) == del.charAt(0)) {
      -        sb.deleteCharAt(i);
      -    }
      -}
      +line = line.replace(del.substring(0, 1), "");
      Не? :)
      Ответить
      • Не могу точно сказать, но по-моему, нет.
        Там подвох в replace, толи только первое заменит, толи строку в регулярку сконвертирует...
        А вообще, не помню точно.
        Ответить
        • String replace(CharSequence target, CharSequence replacement)
          Replaces each substring of this string that matches the literal target sequence with the specified literal replacement sequence.


          Все там нормально ;)
          Ответить
          • Нужно удалить вводимый символ из строки. просто тут несколько говенно реализованно удаление и ввод удаляемого символа (в сканнере нет методов возвращающих char).

            Насчет удаления с реплайсом, да все должно сработать.
            Ответить
    • Это не говнокод, это типичная ошибка новичка, обусловленная неопытностью. Удалять из массива надо с конца.
      А если говорить о коллекциях, то там всё плохо. Коллекции лучше не трогать, итераторы не приспособлены к изменению коллекций (тривиальные случаи не имеют практической ценности). Обычным решением является копирование нужных данных в новую коллекцию.
      P.S. Говнокод подобен коту, гадящему в тапки. Кот понимает (на своём уровне), что он делает.
      Ответить
      • Типичная ошибка - непонимание, что такое выч сложность и с чем ее едят.
        Ответить
        • это учебный пример, на той строке где производится удаление, это не так важно.
          Ответить
          • На той - не важно, на другой может быть важно. Вычсложность - довольно важное понятие, его нужно понимать не то, чтобы сразу, но вовремя.
            Ответить
            • значит буду читать раздел по вычсложности и анализу оной, вот сейчас под рукой книжка хопкрофта - структуры данных и алгоритмы.
              Ответить
              • А лучше прогоняй свои проги на больших количествах данных, понимание, что разница между O(n*log(n)) и O(n**2) есть придет очень быстро :) Заодно отучишься хранить данные без надобности в памяти.
                Ответить

    Добавить комментарий