[java] Hoe tussenwaardes in een if meegeven?

Pagina: 1
Acties:
  • 46 views sinds 30-01-2008

  • the_scientist
  • Registratie: November 2004
  • Laatst online: 15-11-2023
Ik heb een klein Java-probleempje. De onderstaande code werkt, alleen wanneer de bmi groter is dan 18, stopt hij bij de 2e else-regel. Ik heb mijn java-boek al flink doorgezocht maar ik kan nergens vinden hoe ik een 2e operator binnen 1 regel mee kan geven om ook een maximale waarde mee te geven.

Ik hoop dat m'n vraag duidelijk is :/

code:
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
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Calculator extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        String slengte=request.getParameter("lengte");
        String sgewicht=request.getParameter("gewicht");
        double dlengte = Double.parseDouble(slengte);
        double dgewicht = Double.parseDouble(sgewicht);
        double bmi = 10000 * dgewicht / (dlengte * dlengte);

        response.setContentType("text/html");
                PrintWriter out = response.getWriter();
                out.println("<html>");
                out.println("<body>");
                out.println("<h1>Body Mass Index</h1>");
                out.println("De Body Mass fIndex is: " +bmi  );
                out.println("<br>");

        if ( bmi < 18 )
                out.println("U heeft ondergewicht.");

        else
            if ( bmi >= 18)
                out.println("U heeft een normaal gewicht.");

        else
            if ( bmi >= 25)
                out.println("U heeft licht overgewicht.");

        else
            if ( bmi >= 27)
                out.println("U heeft matig overgewicht.");

        else
                out.println("U heeft ernstig overgewicht.");

                out.println("</body>");
                out.println("</html>");
    }
}

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 01-12 13:02

Dido

heforshe

Als je de volgorde van je ifjes nou eens omdraait? Dit heeft niets met java te maken, maar met logica, lijkt me ;)

Dus eerst >=27, dan >=25, dan >=18

Zo'n geneste if-boom kan trouwens ook vast wel met een switch/case/whatever gedaan worden, denk ik?

Of je maakt er van <18, <25, <27, else.

[ Voor 51% gewijzigd door Dido op 16-04-2007 22:44 ]

Wat betekent mijn avatar?


  • Montaner
  • Registratie: Januari 2005
  • Laatst online: 30-11 13:52
Begin bij de grootste waarde,

dus eerst if bmi >= 28 u heeft ernstig
dan 25 etc etc.


^^^^^^^^^^^^^^^^^^^^^^^^
was me voor :D

[ Voor 20% gewijzigd door Montaner op 16-04-2007 22:44 ]


  • writser
  • Registratie: Mei 2000
  • Laatst online: 28-11 15:44
Genoeg mensen zullen erg tevreden zijn met je huidige calculator ..

Onvoorstelbaar!


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Waar ligt de grens tussen "matig overgewicht" en "ernstig overgewicht"?

offtopic:
Het is trouwens tegenwoordig "U hebt" (2e persoon).


[edit]
the_scientist schreef op maandag 16 april 2007 @ 22:41:
Ik heb mijn java-boek al flink doorgezocht maar ik kan nergens vinden hoe ik een 2e operator binnen 1 regel mee kan geven om ook een maximale waarde mee te geven.
Niemand heeft je vraag gelezen...

Wat je vraagt is een logische-AND. Meestal wordt daarvoor de luie-&& gebruikt, maar de & kan volgens mij ook.
Het wordt dus:
Java:
27
               if (bmi >= 18 && bmi < 25)


Omdat op regel 23 al bmi < 18 staat is bmi >= 18 altijd waar. Het is dus te versimpelen tot:
Java:
27
               if (bmi < 25)


Als je dit overal doet krijg je dus de tip van Dido:
Dido schreef op maandag 16 april 2007 @ 22:42:
Of je maakt er van <18, <25, <27, else.

[ Voor 67% gewijzigd door Daos op 16-04-2007 23:13 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Even logisch nadenken en desnoods even mbhv de debugger stap voor stap je code uitvoeren.
Dit is best basic, en mits een beetje moeite zou je hier ook geen topic voor nodig hebben. :)

https://fgheysels.github.io/


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Kijk ook eens hier: Debuggen: Hoe doe ik dat?
Dit kun je met simpelweg een beetje debuggen (en gewoon logisch nadenken en stap voor stap door je code 'denken' of 'steppen' met een debugger) toch wel zelf achterhalen?

[edit]
Potver wiebenik! :(

[ Voor 5% gewijzigd door RobIII op 16-04-2007 23:15 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.