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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> методы в цикле 
V
    Опции темы
ZeusX
  Дата 8.1.2008, 06:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте друзья,

имеется такая проблема, прошу Вашей помощи.

есть цикл:

Код

for( int i = 3; i <= 17; i++ ) {
          pstmt = connection.prepareStatement( sql );
          pstmt.setDate( 1, date );
          pstmt.setInt( 2, cashCurrency.getCodeCurrency() );
          pstmt.setInt( 3, i );
          rs = pstmt.executeQuery();
                    
          cashCurrency.setG3( rs.getString("Value") );                  
}


у класса cashCurrency есть поля от G1 по G34! вопрос как замутить 
Код

cashCurrency.setG3( rs.getString("Value") ); 

чтобы вместо setG3 было на подобие setGi
PM MAIL   Вверх
niasilil
Дата 8.1.2008, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



добавить еще один метод в CashCurrency и строчку выше заменить на 
Код

cashCurrency.setG(3,  rs.getString("Value") ); // or i instead of 3

И потереть все методы getG1 по getG34 и оставить один, который возвращает соответствующий елемент массива g[]. Иметь 34 таких геттера как в примере наверху это бррр. 

А вообще то было бы желательно видеть этот класс  CashCurrency хотя бы частично.

Это сообщение отредактировал(а) niasilil - 8.1.2008, 07:19


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
ZeusX
  Дата 8.1.2008, 07:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

public class ReportCashCurrency {

    private int codeCurrency;
    private String g1;   // Остаток на начло дня, всего
    private String g2;   // Приток валюты, всего
    private String g3;   // в том числе:
    private String g4;   // Поступление депозитов клиентам банка
    private String g5;   // Погашение кредитов клиентами банка
    private String g6;   // Поступление средств по денежным переводам
    private String g7;   // Куплено, всего
    private String g8;   // (средневзвешенный курс)

    . . .

    private String g31;  // Обналичивание
    private String g32;  // Конвертация
    private String g33;  // Прочий отток
    private String g34;  // Остаток на конец дня, всего

    public int getCodeCurrency() {
        return this.codeCurrency;
    }
    
    public void setCodeCurrency( int code ) {
        this.codeCurrency = code;
    }
    
    public String getG1() {
        return this.g1;
    }
    
    public void setG1( String g1 ) {
        this.g1 = g1;
    }
    
    public String getG2() {
        return this.g2;
    }
    
    public void setG2( String g2 ) {
        this.g2 = g2;
    }

    . . .


PM MAIL   Вверх
ZeusX
  Дата 8.1.2008, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



to niasilil, 

Спасибо за направление ! Решил проблему так:

Код

public class ReportCashCurrency {

    private int codeCurrency;
    private Map<Integer, String> map = new HashMap();

    public int getCodeCurrency() {
        return this.codeCurrency;
    }
    
    public void setCodeCurrency( int code ) {
        this.codeCurrency = code;
    }
    
    public String getG( int key ) {
        return map.get( key );
    }
    
    public void setG( int key, String value ) {
        this.map.put( key, value );
    }
}

PM MAIL   Вверх
niasilil
Дата 8.1.2008, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну да, что то типа этого. Только map здесь overkill. Простой массив проще всего. Опять же юзер не должен иметь возможности ввести негативный int или что то что больше чем 34. 

Здесь еще одна проблема возникла. Чтобы пользоваться классом ReportCashCurrency, необходимо знать все эти коды. Если юзер их знает, то все замечательно. А вот если нет, тогда ему придется открывать API этого класса и смотреть что же там чему соответствует (не забудь javadoc). То есть интуитивно нифига непонятно что g5 это погашение кредитов. Как эту проблему обойти?  Не знаю, надо знать особенности твоего финансового микро-мира. 

И комменты верни обязательно, потом сам забудешь что за номер.

Кстати, почему численные значения ты держишь в String? Зачем эта морока с переконвертацией?


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
Kangaroo
Дата 8.1.2008, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



Вот еще вставлю своих 5 копеек  smile 
ZeusX, у вас в первом посте неправильное использование PreparedStatement'a:
Код

for( int i = 3; i <= 17; i++ ) {    
          pstmt = connection.prepareStatement( sql );    
          pstmt.setDate( 1, date );    
          pstmt.setInt( 2, cashCurrency.getCodeCurrency() );    
          pstmt.setInt( 3, i );    
          rs = pstmt.executeQuery();    
                     
          cashCurrency.setG3( rs.getString("Value") );                   
}

Вы в каждом цикле заново его создаете. А нужно раз создать, он предкомпилируется, а потом только параметры подавать.
Код

pstmt = connection.prepareStatement( sql );    
for( int i = 3; i <= 17; i++ ) {              
          pstmt.setDate( 1, date );    
          pstmt.setInt( 2, cashCurrency.getCodeCurrency() );    
          pstmt.setInt( 3, i );    
          rs = pstmt.executeQuery();    
                     
          cashCurrency.setG3( rs.getString("Value") );                   
}

Надеюсь нигде не ошибся  smile 


--------------------
Lost....
PM MAIL MSN   Вверх
ZeusX
Дата 8.1.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



to Kangaroo, 

вауууу Спасибо
PM MAIL   Вверх
jManiak
Дата 8.1.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ИМХО, все-таки лучше вариант niasilil.
Я бы так сделал, чем map'ом.
PM MAIL ICQ   Вверх
makados
Дата 9.1.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вариант от niasilil наиболее оптимальный, как уже сказали.

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

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

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


 




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


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

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