public class Simple
{
public static void main( String args[])
{
int i;
for (i =2; i<100; i++)
{
if(i<8 & i!=4 & i!=6 ) System.out.println(i);
if ( i%2!=0 & i%3!=0 & i%5!=0 & i%7!=0) System.out.println(i);
}
}
}
Писал программу, которая находит все простые числа от 2 до 100. Сильный "говнокод"?
Есть ли надежда стать хорошим программистом? Занимаюсь дней 10, но не сильно усердно, так как не всегда есть время. Как Вы начинали? Через что проходили?
Java
Поделитесь своими соображениями с начинающим java-"кодером")))Заранее спасибо!
Кто ж так простые числа ищет? Ты бы ещё сам все простые числа нашёл и на них поделил... смешно. Создай динамический массив ArrayList с числами, кидай туда каждое новое простое число. Каждое следующее дели на известные простые числа. Всё.
Сергей Матвеев
Я про массивы знаю пока только на уровне определения. Может когда дойду до них сделаю так, как Вы говорите. Я же написал 10 дней с полного нуля изучаю
Не особенно. Смотри как пример алгоритм - http://beginnersbook.com/2014/01/java-program-to-display-prime-numbers/
Лучше научись сначала искать ответы/примеры/документацию в интернете чем строить велосипед каждый раз заново.
Лучше научись сначала искать ответы/примеры/документацию в интернете чем строить велосипед каждый раз заново.
Также примерно и начинали: с небольших программ, которые что-нибудь делают с числами. Из минусов твоего алгоритма: если ты захочешь изменить 100 на большее число, программа будет работать не правильно и надо будет что-нибудь додумывать. Существует огромное количество алгоритмов нахождения простых чисел. Один из самых простых и эффективных написан выше.
По стилю: кода тут немного, поэтому и сказать особо нечего:
0) Общее правило: код ты пишешь один раз, а читать его будут несколько раз, особенно если это большой проект, поэтому старайся писать хорошо читаемый код.
1) int i;
for (i =2; i<100; i++)
Зачем объявление переменной выносит из for если после цикла ты ее не используешь? Можно (и нужно) писать так:
for (int i = 2; i < 100; i++)
2) Кстати, обрати внимание на пробелы: операции +, -* , /, =, +=, -=, /=, *=, <, >, =<, >=, !=, == и пр. с двух сторон отделяются пробелами для улучшения читаемости.
3) i++ не знаю как в Java, а в С++ советуют писать ++i. Функция i++ -внтури себя вызывает функция ++i. Получаются лишние команды. Работает дольше.
4) if(i<8 & i!=4 & i!=6 ) System.out.println(i);
Условие и оператор лучше писать на разных строчках, это улучшает читаемость:
if(i<8 & i!=4 & i!=6)
System.out.println(i);
В целом, старайся всегда писать, чтобы на одной строчке была только одна команда, это улучшает читаемость.
5) Даже если в блоке if только одно условие, оператор лучше писать в фигурных скобках:
if(i<8 & i!=4 & i!=6) {
System.out.println(i);
}
Если в будущем ты захочешь изменить код, например, добавив еще одно действие, скажем, вывести квадрат простого числа, ты можешь ошибиться забыв добавить фигурные скобки:
if(i<8 & i!=4 & i!=6)
System.out.println(i);
System.out.println(i*i);
Тогда работать будет не правильно. Лучше всегда писать в фигурных скобках.
6) if(i<8 & i!=4 & i!=6)
Тут и должны использоватся побитовые операции & или ты ошибся и должны быть логические && ? И каждый программист, кто полезет в твой код, задастся этим вопросом: сделал ты ошибку или все так и должно быть? О любых не очевидных действиях, лучше писать в комментариях.
---
Я начинал в школе / универе, делал лабы по информатике. Иногда перепечатывал программы из учебников.
По стилю: кода тут немного, поэтому и сказать особо нечего:
0) Общее правило: код ты пишешь один раз, а читать его будут несколько раз, особенно если это большой проект, поэтому старайся писать хорошо читаемый код.
1) int i;
for (i =2; i<100; i++)
Зачем объявление переменной выносит из for если после цикла ты ее не используешь? Можно (и нужно) писать так:
for (int i = 2; i < 100; i++)
2) Кстати, обрати внимание на пробелы: операции +, -* , /, =, +=, -=, /=, *=, <, >, =<, >=, !=, == и пр. с двух сторон отделяются пробелами для улучшения читаемости.
3) i++ не знаю как в Java, а в С++ советуют писать ++i. Функция i++ -внтури себя вызывает функция ++i. Получаются лишние команды. Работает дольше.
4) if(i<8 & i!=4 & i!=6 ) System.out.println(i);
Условие и оператор лучше писать на разных строчках, это улучшает читаемость:
if(i<8 & i!=4 & i!=6)
System.out.println(i);
В целом, старайся всегда писать, чтобы на одной строчке была только одна команда, это улучшает читаемость.
5) Даже если в блоке if только одно условие, оператор лучше писать в фигурных скобках:
if(i<8 & i!=4 & i!=6) {
System.out.println(i);
}
Если в будущем ты захочешь изменить код, например, добавив еще одно действие, скажем, вывести квадрат простого числа, ты можешь ошибиться забыв добавить фигурные скобки:
if(i<8 & i!=4 & i!=6)
System.out.println(i);
System.out.println(i*i);
Тогда работать будет не правильно. Лучше всегда писать в фигурных скобках.
6) if(i<8 & i!=4 & i!=6)
Тут и должны использоватся побитовые операции & или ты ошибся и должны быть логические && ? И каждый программист, кто полезет в твой код, задастся этим вопросом: сделал ты ошибку или все так и должно быть? О любых не очевидных действиях, лучше писать в комментариях.
---
Я начинал в школе / универе, делал лабы по информатике. Иногда перепечатывал программы из учебников.
Сергей Матвеев
Я менял на 1000 и 100000.Вроде работает нормально....
Сергей Матвеев
На счет выноса переменной из цикла, я поначалу так и делал, но почему-то выдавало ошибку. На счет фигурных скобок, то раньше видел так как Вы говорите, но потом открыл книгу Шилдта и там в начале не было фигурных скобок, вот я и перенял) Но на будущее учту Ваши замечания.
Похожие вопросы
- Что такое фреймворк? Кто нибудь может вразумительно объяснить, что такое фреймворк? Заранее спасибо)
- В чем смысл задачи? Решение не надо, кода не надо, просто хочу понять, что нужно сделать, заранее спасибо
- Всем привет. Помогите плз. Мне нужна помощь тех кто действительно хорошо знает Java т. к мне нужно выбрать один из курсов
- Помогите доделать код на java. В форму пользователь вводит символ, который нужно заменить на #.
- Не выводит изображение в JAVA
- Java проблема с рефлексией.
- Java Developer vs Android Developer. Куда дальше?
- Пишут ли стартапы на Java?
- С какой книги начинать изучение Java?
- Помогите сделать java приложение! { СРОЧНО }