switch

8 отговора 382 прегледа
#1

switch

Kak da izvozja switch-statement v Java taka, che da ne izpolzvam diskretni stoinosti, a intervali?

Konkretno - na bazata na opredelen procent verni otgovori se poluchava opredelena ocenka. No ocenkata e za opredelen interval.

Blagoradja.

PS: Kak da pisha na kirilica, bez da imam na kompjutara si?

Отговор
в отговор на Mylord #2

За кирилицата

Пробвай KREDOR. Въпреки че под Windows използвайки MozillaFirebird не работи ;(. Предполагам че под IE трябва да върви (в момента съм под Safari на iBook G4 - Mac - и тука също работи отлично).

Отговор
в отговор на Potencialen emigrant #4

Re: switch

Смея да твърдя, че отговора беше кратък, точен и ясен. Значи си пиша if-овете и никoй не може да ми каже, че не е добре стилистично изпипано.

Отговор
в отговор на Mylord #5

Re: switch

Напротив!

Хората са ти дали полиморфизъм. Приеми факта, че решението е грозно като индикатор, че подхода ти е грешен. Може да тръгнеш към Range обект например.

--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Отговор
в отговор на Mycлoн #6

Re: switch

Извини ме за излкючително гламавия въпрос, но какво е Range-обект? Още се уча и съм попрочел туй-онуй, но такова чудо още не съм срещнал. Ще се радвам да разбера що за магия е това.

Отговор
в отговор на Mylord #7

Re: switch

<pre>
// tova e na C++ na JAVA si go prevezhdaj ti

class rangez
{
vector<int> minz;
vector<int> maxz;
public:
void set_new_range( int the_min, int the_max );
unsigned get_me_range_num_of( int value );
};

void rangez::set_new_range( int the_min, int the_max )
{
minz.push_back( the_min );
maxz.push_back( the_max );
}

unsigned get_me_range_num_of( int value )
{
for( cnt = 0; cnt < minz.size( ); cnt++ )
{
// tuk imash dve sravnenia i si gotov
// vrushtash cnt ako te udovoletvoriavat
}
// tuk vrushtash zero ako nito edna ot dvojkite sravnenia ne te e udovoletvorilo
}

...........
...........

rangez my_rangez;

my_rangez.set_new_range( 0, 10 );
my_rangez.set_new_range( 11, 20 );

int my_value = 16;

switch( my_value )
{
case 1 : // first range
{
//do something
} break;
case 2 : // second range
{
//do something else
} break;
}

// ima dupki zashtoto rangez mozhe da se pripokrivat
</pre>

I wanna read interesting postingz

Редактирано от expeler на

Отговор
в отговор на Mylord #8

Re: switch

В Java switch-case е със скоростта на if-else, че даже и по-лоша. Като ми казаха, че switch-case се компилира до if-else аз естествено не повярвах, ама после си играх вкъщи и направих съответните замервания - приблизително една и съща скорост, като switch-case се опитва да изостава.

Говорим за компилатора на sun от j2sdk1.4.2. Дано в java1.5 да има промяна в тази посока...

Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Отговор
в отговор на expeler #9

Re: switch

Blagoradja za napatstvijata. I na C++ mi varshi rabota. Vazhnoto e idejata da naucha. Kakto pishe po-nadolu - na Java njama osobeno znachenie, shtom kompilatora svezhda switch do if-else.

When things are nice I never prefer one to the other.
Отговор