Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> расчет груза, программка 
:(
    Опции темы
sprut
Дата 4.8.2009, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 5.2.2009

Репутация: нет
Всего: нет



Код

public class traffic {
    
    public static void main (String args[]) 
    {
    
        Box box1 = new Box();
        
        

        System.out.println("Расчет грузоперевозки при width = 2 height = 3 depth = 5 weigth = 10 distance = 100 \n");
        
        
        box1.width = 2;
        box1.height = 3;
        box1.depth = 5;
        box1.weigth = 10;
        box1.distance = 100;
        
      
    box1.volume();
        
        }
        
    }


Код

class Box {
    
    double width; //длина 
    double height; //ширина
    double depth; //высота
    double weigth; //масса
    double distance; //дистанция
    double sum; // проценты за не габоритность
    double a; // общая сумма длинны ширины и высоты
    double sum1; // если масса груза больше 1500 килограмов 
    double otvet; // ответ 

    void volume() {
     a = width + height + depth;
     if(a == 4)
     {
         sum = 15;
     }
     if(a == 5)
     { 
         sum = 30;
     }
     if (a == 6 || a == 7 || a == 8)
     {
         sum = 50;
     }
     if (a == 9 || a == 10 || a == 11)
     {
         sum = 75;
     }
     if (a >= 12)
     {
         sum = 100;
     }
    
     if (weigth >= 1500) {
         sum1 = 50;    
    }
     otvet = ((distance * 8) * (sum + sum1 ) ) /100;
     System.out.println(otvet);
    }
   
}


Хотелось бы узнать красивше код можно было бы реализовать то как?

и еще вопрос почему в мтоде volume можно реализовывать циклы и т.п но он не дает возврат значений а вычисляет все в методе
почему циклы и т.п нельзя релизовать вместо void volume() в double volume() с возвратом значений return и выводом ответа в Class traffic?
PM MAIL   Вверх
duk
Дата 4.8.2009, 22:46 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Some Object
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 19.7.2007

Репутация: 4
Всего: 4



sprut, этот код очень похож на какую-то рагульную лабораторную работу.
По крайней мере можно было бы указать классификатор доступа к этому методу и переменным, а также дать им более осмысленные имена:
Код

    double sum; // проценты за не габоритность
    double a; // общая сумма длинны ширины и высоты


По поводу результата работы:
Код

  System.out.println(otvet);


возвращать с помощью return, а само значение выводить из какого-то другого места (метод main, к примеру).

ЗЫ Входные данные можно получать через конструктор.

Добавлено через 1 минуту и 36 секунд
Циклов я там вообще не заметил, возможно не внимательно смотрел.
PM MAIL   Вверх
m1ha
Дата 5.8.2009, 02:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.5.2007

Репутация: 1
Всего: 1



НЕ совсем понял что ты имел ввиду, но тут я немного поменял твой код посмотри может чем поможет

Код

public class Box {
        private int width;
        private int height; 
        private int depth; 
        private int weigth; 
        private int distance;
        private double sum; 
        private double sum1; 
        public Box(Integer... parameters){
         if (parameters.length == 5){
             width = parameters[0];
             height = parameters[1];
             depth = parameters[2];
             weigth = parameters[3];
             distance = parameters[4];
         }
         else {
             throw new IllegalArgumentException();
         }
        }
        
        protected double volume() {
         switch(width + height + depth){
         case 4: sum = 15;break;
         case 5: sum = 30;break;
         case 6: sum = 50;break;
         case 7: sum = 50;break;
         case 8: sum = 50;break;
         case 9: sum = 75;break;
         case 10: sum = 75;break;
         case 11: sum = 75;break;
         case 12: sum = 100;break;
         default: if (width + height + depth > 12) { sum = 100;}
         }
         if (weigth >= 1500) {
             sum1 = 50;    
        }
        return ((distance * 8) * (sum + sum1 ) ) /100;
        }
        
        public static void main(String[] a){
         System.out.println(new Box(2,3,5,10,100).volume());
        }
    }


PM MAIL   Вверх
Evgenic
Дата 5.8.2009, 17:17 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 21.11.2008

Репутация: нет
Всего: нет



1. Делать инициализацию класса в конструкторе класса. Проводить ее в момент создания класса.
2. Прочитать про инкапсуляцию и обращение к полям класса(геттеры сеттеры)
3. Выводить что либо там где необходим вывод, а не где вздумается.
PM MAIL   Вверх
niasilil
Дата 16.8.2009, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.6.2007
Где: USA

Репутация: 8
Всего: 9



Цитата(m1ha @ 5.8.2009,  02:15)
НЕ совсем понял что ты имел ввиду, но тут я немного поменял твой код посмотри может чем поможет

Код

public class Box {
        private int width;
        private int height; 
        private int depth; 
        private int weigth; 
        private int distance;
        private double sum; 
        private double sum1; 
        public Box(Integer... parameters){
         if (parameters.length == 5){
             width = parameters[0];
             height = parameters[1];
             depth = parameters[2];
             weigth = parameters[3];
             distance = parameters[4];
         }
         else {
             throw new IllegalArgumentException();
         }
        }
        
        protected double volume() {
         switch(width + height + depth){
         case 4: sum = 15;break;
         case 5: sum = 30;break;
         case 6: sum = 50;break;
         case 7: sum = 50;break;
         case 8: sum = 50;break;
         case 9: sum = 75;break;
         case 10: sum = 75;break;
         case 11: sum = 75;break;
         case 12: sum = 100;break;
         default: if (width + height + depth > 12) { sum = 100;}
         }
         if (weigth >= 1500) {
             sum1 = 50;    
        }
        return ((distance * 8) * (sum + sum1 ) ) /100;
        }
        
        public static void main(String[] a){
         System.out.println(new Box(2,3,5,10,100).volume());
        }
    }


m1ha, желание сократить количество строк путем запихивания все в одну строку надо в себе давить сразу. твои однострочные case 4: sum = 15;break; ужасны. Не надо так делать, следуй Java code convention


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0751 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.