Toon posts:

[Java]else if 2x uitgevoerd...???

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

Verwijderd

Topicstarter
Gegeven positie.getValue() = -10

De bedoeling van deze code is dat ik een positie kan opgeven tussen -50 en 50. En dat moet ik dan vertalen naar een plek op het scherm (alleen de x-as).
Het werkt prima,
maar het vreemde is dat als ik een negatief getal ingeef, dat x niet minder wordt dan de helft van het scherm. Tenzij ik in de berekening 2 x een minteken plaats (zoals nu in de code staat)
Wat me nog meer opvalt is de message die geprint wordt ook 2 x negatief print. Dus daarom heb ik een xtra - teken geplaats. Maar ik begrijp het niet...


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public int getXWaarde(){
       //breedte van het scherm ophalen
        int x = getSize().width/2;
        if (positie.getValue()==0){
            return x;
        }
        else if(positie.getValue()>0){
            System.out.println("positief");
            return x + (positie.getValue()*(x/50)-150);

        }
        else if(positie.getValue()<0){
            System.out.println("negatief");
            return x - (positie.getValue()*(x/-50));  
        }
        return x;
            
    }


output van System.out.println("positief");
negatief
negatief

  • Wirf
  • Registratie: April 2000
  • Laatst online: 07:50
Het eerste wat zo in mij opkomt is dat je functie gewoon twee keer aangeroepen wordt. Misschien kun je bovenaan je functie ook een System.out.println() zetten.

Heeft sinds kort zijn wachtwoord weer terug gevonden!


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ik vind het imo netter om positie.getValue eerst in een variabele te zetten.
En je derde if is uiteraard overbodig, maar das een detail.

{signature}


Verwijderd

Topicstarter
OK, code aangepast zodat het netter is en het overbodige eruit.... ;)

Maar het resultaat is het zelfde....(positie.getValue() = -50)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public int getXWaarde(){
        int x = getSize().width/2;
        int pos = positie.getValue();
        System.out.println(pos);
        if (pos==0){
            return x;
        }
        else if(pos>0){
            System.out.println("positief");
            return x + (positie.getValue()*(x/50)-150);

        }
        else{
            System.out.println("negatief");
            return x - (positie.getValue()*(x/-50));  
        }        
    }


output:
-50

negatief

-50

negatief

2

Verwijderd

Topicstarter
Dit is de complete code van de class

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
45
46
47
48
49
50
51
52
53
54
55
import javax.swing.*;
import java.awt.*;
import java.io.*;
import javax.imageio.*;

public class HuisViewPanel extends JPanel{

    private Dimension dimension;
    private Positie positie;
    private Image auto;

    public HuisViewPanel(Positie dePositie){
        positie = dePositie;
        setBackground(Color.white);
        
        String filename = "auto.jpg";
        
        try {
            auto = ImageIO.read(new File(filename));
        }
        catch (IOException exception){
            exception.printStackTrace();
        }
    }
    
    public int getXWaarde(){
        int x = getSize().width/2;
        int pos = positie.getValue();
        System.out.println(pos);
        if (pos==0){
            return x;
        }
        else if(pos>0){
            System.out.println("positief");
            return x + (positie.getValue()*(x/50)-150);

        }
        else{
            System.out.println("negatief");
            return x - (positie.getValue()*(x/-50));  
        }        
    }
        
    
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.setColor(Color.red);
        g.drawRect(100, 70, 150, 100);
        g.drawLine(100, 70, 175,20);
        g.drawLine(175,20,250,70);
        g.drawRect(120,140,20,30);
        g.drawImage(auto, getXWaarde(), 210, null);
        System.out.println(getXWaarde());
    }
}


Ik ben aan het experimenteren met het grafische gedoe....Dus neem me niet kwalijk voor beginners fouten ;)
Doe ik iets niet goed met paintComponent(), omdat ik daar de methode getXWaarde() aanroep...???

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 27-05 23:27

Creepy

Tactical Espionage Splatterer

code:
1
2
3
4
5
6
7
8
9
10
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.setColor(Color.red);
        g.drawRect(100, 70, 150, 100);
        g.drawLine(100, 70, 175,20);
        g.drawLine(175,20,250,70);
        g.drawRect(120,140,20,30);
        g.drawImage(auto, getXWaarde(), 210, null);
        System.out.println(getXWaarde());
    }



Je roept getXWaarde twee keer aan, vindt je het gek dat ie daarom twee keer negatief afdrukt?

[ Voor 71% gewijzigd door Creepy op 19-12-2003 10:42 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Als je nu eens met je debugger door je code stapt, dan zie je stap voor stap wat er gebeurt.

Het is iig niet de bedoeling van P&W dat anderen hier jouw code gaan debuggen.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.