Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Itachi261092
Веб-Разработчик
79 / 79 / 9
Регистрация: 23.01.2012
Сообщений: 696
#1

Упрощение и оптимизация кода простой программы - Java SE

02.06.2013, 21:43. Просмотров 797. Ответов 0
Метки нет (Все метки)

Здравствуйте форумчане. Недавно мне пришлось столкнуться с замечательным языком Java, получилось так, что времени на изучение основ и мануалов у меня нет, и время очень сильно поджимает. накалякал пока пару программ на скорую руку "лижь бы работало и компилировалось без ошибок" а то что правильно ли это написано с точки зрения самого языка - мне не известно, увы. Обращаюсь к опытным людям с целью более комфортного освоения данного языка. Помогите пожалуйста понять как правильно нужно работать с Java чтобы в коде не было непонятных моментов. Сюда выкладываю 2 программы написанных "за вечер", и прошу гуру посмотреть на явные и не явные косяки в коде и исправить абсурдные куски (уверен такие найдутся).

Первая программа писалась по заданию:
Указания: При написании программ использовать операторы арифметических присваиваний.
Счастливым будет считаться такое число из шести цифр, в котором сумма левых трех цифр равна сумме правых трех цифр, например, 457961: 4+5+7=9+6+1 = 16. Найти все счастливые числа в интервале от 100000 до 999999 и подсчитать их количество.

код не весь мой. помогали на форуме. тут много комментариев и думаю каждый сразу разберётся что я хотел сделать
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
package myfirstjava;
public class MyFirstJavaProgram {
    public static boolean intToArr(int in) throws IllegalArgumentException {//функция обработки массива
        if (in<=0) throw new IllegalArgumentException(); //обработка входного значения (типа int)
        int size = (int)Math.log10(in)+1; // расчёт размера массива
        int[] res = new int[size]; // объявление массива для занесения результата
        int curPos = 0, x, y; //вспомогательные переменные
        boolean flag=false; //флаг для проверки массива
        do //преобразование числа типа int в массив с именем res[]
        {
            res[curPos] = in%10;
            in /= 10;
        }
        while(++curPos<size); // уловие выхода из цикла преобразования массива
        x=res[0]+res[1]+res[2]; // икс равен сумме первых 3 значений массива
        y=res[3]+res[4]+res[5]; // игрек равен сумме 4-6 значений массива
        if (x==y) flag=true; //проверка на равенство левой и правой части
        return flag; // функция расчёта возвращает флаг ИСТИНА если левая часть массива (первые 3 значения) равна правой части (последующие 3 значения)
        
    }
    public static void main(String[] args) { //главная программа
        int min=100000, max=900000, number=0; //объявляем минимальную и максимальную границу и счётчик
        for (int i=min; i<max; i++){ //в цикле наращиваем используемое значение
            if (intToArr(i)==true){ //и передаём каждое на обработку функции intTosArr для обработки массива
                    number++; //если функция вернёт true то наше число является счастливым и мы увеличиваем счётчик на 1
                    System.out.println("№"+number+":"+i); //печать числа соответствующего правилу
            } //конец условия if
        } //конец цикла for
        System.out.println("Колличество счастливых билетов:"+number); //печать значения счётчика
    } //конец программы
}
Вторая написана только что. Задание:
Указания: При написании программ массивы чисел, которые заданы, определять через константы.
Задана последовательность, состоящая из 20 целых чисел. Определить М – наибольшее и m – наименьшее из этих чисел.Получить в порядке возрастания все числа данной последовательности из интервала(m, (m+М)/2).

тут я писал почти всё сам. стырил только код для сортировки массива где то в инете и прикрутил его в качестве процедуры:
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
package javaapplication1;
public class JavaApplication1 {
    public static int[] sortArr (int[] inArr){//сортировка массива
        int Arr[]=inArr;
        for (int i = 0; i < Arr.length; i++) {
        int min = Arr[i]; // Предполагаемый минимальный элемент
        int imin = i; // Индекс минимального элемента
            for (int j = i+1; j < Arr.length; j++) {
                if (Arr[j] < min) { //поиск и проверка минимального элемента
                    min = Arr[j];
                    imin = j;
                }
            }
            if (i != imin) { //сортировка относительно минимального элемента
                int temp = Arr[i];
                Arr[i] = Arr[imin];
                Arr[imin] = temp;
            }
        }
        return Arr; //возвращает отсортированный массив
    }
    public static void enterArr (int[] inArr, boolean flag){//печать массива
        int max=Integer.MIN_VALUE,min=Integer.MAX_VALUE;
        for (int i=0; i<inArr.length; i++){
            if (i==(inArr.length-1)){
                System.out.println(inArr[i]+"."); //в конце массива печатаем точку
            }
            else{
                System.out.print(inArr[i]+",");
            }
            if (inArr[i]<min){ //находим минимальный элемент массива
                min=inArr[i];
            }
            if (inArr[i]>max){ //тут максимальный
                max=inArr[i];
            }
        }
        if (flag==true){ //если при вызове процедуры второй параметр true то
            System.out.println("min="+min+", max="+max); //печатаем минимальное и максимальное
        }
    }
    public static void main(String[] args){
        int max=Integer.MIN_VALUE,min=Integer.MAX_VALUE,
            mass[]={5,15,39,88,2,3,8,12,45,17,7,67,91,4,65,55,78,23,34,11},
            ResultArray[];
        enterArr(mass, true); //печать массива
        for (int i=0; i<=(mass.length-1); i++){ //поиск минимального и максимального для обращения к ним позже
            if (mass[i]<min){//минимальное
                min=mass[i];
            }
            if (mass[i]>max){//максимальное
                max=mass[i];
            }
        }
        ResultArray=sortArr(mass);//вызываем сортировку и присваиваем это новому массиву
        int from=min, to=(max/2); //для удобства
        System.out.print("Список элементов от "+min+" до "+to+" : ");
        for (int j=0; j<ResultArray.length; j++){ //печать нужных данных из отсортированного массива
            if ((ResultArray[j]>=from)&(ResultArray[j]<=to)){ //если соответствует параметрам задачи
                System.out.print(ResultArray[j]+", "); //печать
            }
        }
        
        
    }
}
Тут комментариев не так много но надеюсь всё понятно. Буду очень благодарен умельцам которые покажут мне как нужно было ПРАВИЛЬНО и ГРАМОТНО реализовать такие программы.
http://www.cyberforum.ru/java-j2se/thread438899.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2013, 21:43
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Упрощение и оптимизация кода простой программы (Java SE):

Рефакторинг кода(упрощение для понимания)
Есть работающая лабораторная работа, я ее сделал, не показывал преподавателю и...

Оптимизация кода
Добрый день, уважаемые форумчане. Вопрос несколько тривиальный, но в голову...

Оптимизация кода
задача : Группа людей участвует в марафоне, их имена и время за которое они...

Оптимизация кода
во всем коде много раз повторяются такие вот строчки for(int i = 0; i &lt; 9;...

Оптимизация кода для вывода категорий.
Здравствуйте. У меня есть таблица с категориями примерно с такой структурой. ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2013, 21:43
Привет! Вот еще темы с решениями:

Оптимизация кода поиска наибольшего и наименьшего числа
Ребята, Java изучаю по книжке. Хотелось бы увидеть решение от гуру, чтоб знать...

Оптимизация программы
Здравствуйте. есть задача удалить все символы, кроме пробелов, не являющиеся...

Сранный вывод простой программы
Привет программисты. Только недавно начал изучать JAVA, поэтому возник вопрос....

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


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru