Toon posts:

[java] code te vereenvoudigen?

Pagina: 1
Acties:
  • 200 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een domme afteller willen maken die rekening moet houden met het feit of er nu "dag" of "dagen" moet komen. Deze afteller bestaat uit dagen, uren, minuten en seconden.
Nu heb ik dit in mijn script staan:

if (ss > 1 & mm > 1 & hh > 1 & dd > 1) boxB.value="Nog "+dd+" dagen "+hh+" uren "+mm+" minuten "+ss+" seconden tot de vakantie!";
if (ss > 1 & mm > 1 & hh > 1 & dd = 1) boxB.value="Nog "+dd+" dag "+hh+" uren "+mm+" minuten "+ss+" seconden tot de vakantie!";
if (ss > 1 & mm > 1 & hh > 1 & dd = 0) boxB.value="Nog "+hh+" uren "+mm+" minuten "+ss+" seconden tot de vakantie!";
if (ss > 1 & mm > 1 & hh = 1 & dd > 1) boxB.value="Nog "+dd+" dagen "+hh+" uur "+mm+" minuten "+ss+" seconden tot de vakantie!";
if (ss > 1 & mm > 1 & hh = 0 & dd > 1) boxB.value="Nog "+dd+" dagen "+mm+" minuten "+ss+" seconden tot de vakantie!";
if (ss > 1 & mm = 1 & hh > 1 & dd > 1) boxB.value="Nog "+dd+" dagen "+hh+" uren "+mm+" minuut "+ss+" seconden tot de vakantie!";
if (ss > 1 & mm = 0 & hh > 1 & dd > 1) boxB.value="Nog "+dd+" dagen "+hh+" uren "+ss+" seconden tot de vakantie!";
...
...

Nu moet ik dus 16 zo'n spulle gaan schrijven... Bestaat er geen simpelere manier om dit te scripten?
Ik werkt met 1 text-veld waar het resultaat in komt.
Ik heb ergens gelezen dat je meerdere velden moet gebruiken voor dit soort problems, maar gaat het echt niet met 1 output-vak?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
24=16
2*4=8
Oftewel, als je die zin opbreekt in 4 stukjes, is het minder werk B)

{signature}


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je kunt toch gewoon de string in stapjes opbouwen :? Gewoon steeds een gedeelte erachter stoppen.

En als je dat dan zo aanpakt, dan gooi je alles in een aantal arrays en dan kun je het in een loopje doen

Hint:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int a = 1;
int b = 3;
int c = 5;

int[] waarden = { a, b, c };
String[][] woorden = { { "koe", "koeien" }, { "schaap", "schapen" }, { "paard", "paarden" } };

String s = "";
for (int i = 0; i < waarden.length; i++)
{
    s += waarden[i] + " ";
    if (waarden[i] == 1)
        s += woorden[i][0];
    else
        s += woorden[i][1];
    s += ", "
}

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Kijk ook eens naar "dag" + (v == 1 ? "" : "en").

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

En doe dat ook eens met minuut ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op 20 februari 2004 @ 21:54:
Je kunt toch gewoon de string in stapjes opbouwen :? Gewoon steeds een gedeelte erachter stoppen.

En als je dat dan zo aanpakt, dan gooi je alles in een aantal arrays en dan kun je het in een loopje doen

Hint:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int a = 1;
int b = 3;
int c = 5;

int[] waarden = { a, b, c };
String[][] woorden = { { "koe", "koeien" }, { "schaap", "schapen" }, { "paard", "paarden" } };

String s = "";
for (int i = 0; i < waarden.length; i++)
{
    s += waarden[i] + " ";
    if (waarden[i] == 1)
        s += woorden[i][0];
    else
        s += woorden[i][1];
    s += ", "
}
Kan misschien wel lukken...

Verwijderd

Topicstarter
OlafvdSpek schreef op 20 februari 2004 @ 21:59:
Kijk ook eens naar "dag" + (v == 1 ? "" : "en").
hm, maar dan moet ik toch nog steeds die if's maken?

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op 20 februari 2004 @ 22:02:
[...]

hm, maar dan moet ik toch nog steeds die if's maken?
Dat is een speciale shotcut voor if. Hoort bij de basics, alhoewel de meningen uit een lopen in hoeverre het lekker leesbaar is. Maar het is wel de kortste oplossing.

Ik weet niet hoe seieus .osyn is met die ;), maar het kan dus ook met "minuut" "minuten"

[ Voor 15% gewijzigd door Voutloos op 20-02-2004 22:05 ]

{signature}


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Java:
1
2
3
//Concateneren van een String in een loop optimaliseren we met een StringBuffer
//initialize met maximale te verwachten lengte
StringBuffer l_remaining = new StringBuffer(60); 

Kleine optimalisatie erbij.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Voutloos schreef op 20 februari 2004 @ 22:04:
Ik weet niet hoe seieus .osyn is met die ;), maar het kan dus ook met "minuut" "minuten"
is natuurlijk ook zo natuurlijk, "minu" + (v == 1 ? "ut" : "ten") :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
.oisyn schreef op 20 februari 2004 @ 23:08:
is natuurlijk ook zo natuurlijk, "minu" + (v == 1) ? "ut" : "ten" :)
Moeten die haakjes niet anders?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

nee :+

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Lolbroek. Ik zag die edit pas nadat ik het in C++ had getest. Dacht eerst dat ik fout had gecopy/paste. ;->
Pagina: 1