[java] else wordt genegeerd

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Ik heb een klein stukje code gemaakt met daarin if en else statements.
Het gekke is dat als ik inlog met het juiste username en pass dat hij dan wel in een if valt.
Voer ik niet de juiste gebruikersnaam / pass in dan krijg ik opeens niets meer terug en wordt elke if of else genegeerd.

Op internet kan ik er niet veel over vinden , behalve dat er ook een isBlank functie bestaat maar dat in een class van derden. En die kan ik helaas niet gebruiken.

Hier heb ik al op gezochtg maar heeft mij niets opgeleverd nog
http://www.google.nl/sear...er+null&btnG=Zoeken&meta=

http://www.google.nl/sear...pes+int&btnG=Zoeken&meta=


Als de waarde van projectleider dus 1 is gaat het prima.
Het probleem is dat ik ook niet weet welke waarde hij meekrijgt als je geen goede login geeft.
Ik denk dat het gewoon null is maar als ik daar op wil checken dmv
if (blabla == null) {} Maar dat mag weer niet, de fout die ik dan krijg is incomparable types.

Iemand een idee?
Dit is het stukje code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    for (int i = 0; i < ob.length; i++) {
        
      student[i] = (Student) ob[i];
        
        int projectleider = student[i].getProjectleider();
        
        
                if (projectleider == 1){
        Main.rechten = true;
        Main.error = false;
        JOptionPane.showMessageDialog(null, "Je bent ingelogd \n Je hebt groepsleider rechten");
        }
        
        if (projectleider == ' '){
        Main.rechten = false;
        Main.error = false;
        JOptionPane.showMessageDialog(null, "Je bent ingelogd \n Je hebt geen groepsleider bevoegdheden.");
        } 
        
        
        else {
                    JOptionPane.showMessageDialog(null, "Je bent ingelogd \n Je hebt groepsleider rechten " + projectleider);
        }


Edit: Dit werkt dus ook niet
if (projectleider != 1){ }
Heel vaag dus :S

[ Voor 11% gewijzigd door mazz op 21-01-2009 19:45 ]

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • bloody
  • Registratie: Juni 1999
  • Laatst online: 23-09 17:37

bloody

0.000 KB!!

mazz schreef op woensdag 21 januari 2009 @ 19:40:

Als de waarde van projectleider dus 1 is gaat het prima.
Het probleem is dat ik ook niet weet welke waarde hij meekrijgt als je geen goede login geeft.
Nee dat kan ik ook niet zeggen voor jou, dat ligt aan je implementatie :)
Ik denk dat het gewoon null is maar als ik daar op wil checken dmv
if (blabla == null) {} Maar dat mag weer niet, de fout die ik dan krijg is incomparable types.
Tja, het is een int (primitive) en die kunnen niet null zijn. Default zijn ze 0.
Wellicht dat een check daarop beter werkt; dus == 0

nope


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Die check had ik ook al geprobeerd maar het wordt keihard genegeerd?
In de else statement zou die toch sowieso moeten laten zien wat voor waarde 'projectleider' heeft.

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • CoolGamer
  • Registratie: Mei 2005
  • Laatst online: 21-09 18:08

CoolGamer

What is it? Dragons?

Je zou met een debugger kunnen kijken wat er fout gaat. Zet dan een breakpoint aan het begin van de methode en volg hoe de code loopt met de Step Over knop. Dan kan je zien waar het fout loopt.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


Acties:
  • 0 Henk 'm!

  • bloody
  • Registratie: Juni 1999
  • Laatst online: 23-09 17:37

bloody

0.000 KB!!

euh die else wordt niet altijd bereikt idd.
Zet die showMessageDialog eens lekker vooraan, direct na de getProjectleider.
Dan moet toch duidelijk worden lijkt me welke waardes er in voorkomen:
JOptionPane.showMessageDialog(null, "yo, ik ben nu " + projectleider);

nope


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 05:13

Gerco

Professional Newbie

Als je het een beetje fatsoenlijk formatteert is het misschien wat duidelijker wat er mis is (of beter gezegd, wat er daadwerkelijk gebeurt tov wat je wilt dat er gebeurt).

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for (int i = 0; i < ob.length; i++) {
  student[i] = (Student) ob[i];

  int projectleider = student[i].getProjectleider();
        
        
  if (projectleider == 1) {
    Main.rechten = true;
    Main.error = false;
    JOptionPane.showMessageDialog(null, "Je bent ingelogd \n Je hebt groepsleider rechten");
  }
        
  if (projectleider == ' ') {
    Main.rechten = false;
    Main.error = false;
    JOptionPane.showMessageDialog(null, "Je bent ingelogd \n Je hebt geen groepsleider bevoegdheden.");
  } else {
    JOptionPane.showMessageDialog(null, "Je bent ingelogd \n Je hebt groepsleider rechten " + projectleider);
  }


Overigens mist er een } aan het einde, misschien dat er meer code in die loop staat. Is die relevant? Je vergelijkt ook met een char waarde (namelijk ' '), dat is waarschijnlijk niet je bedoeling. De waarde van ' ' is namelijk 32, niet 0.

[ Voor 12% gewijzigd door Gerco op 21-01-2009 20:03 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Ik ga der even mee aan de slag.
Als ik meer weet edit ik mijn post ;)

EDIT: Er staat niet meer in behalve die ene }

[ Voor 25% gewijzigd door mazz op 21-01-2009 20:05 ]

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

projectleider is een int. Waarom check je op een bepaald moment of het gelijk is aan een ' ' (spatie)? :?

Welke IDE gebruik je?

Plaats zoals hierboven gezegd eens wat breakpoints? Zodat je echt erdoor kunt lopen en de huidige status van de var's kunt zien :)

[ Voor 43% gewijzigd door Snake op 21-01-2009 20:04 ]

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Ik gebruik netbeans. Inmiddels heb ik al gevonden hoe je die breakpoints zet.
Nu nog even er mee stoeien dus ;)

Ik heb dus een zogenaamde watch gezet op projectleider. Netbeans zegt alleen in alle gevallen dat hij leeg is.
Ook als hij 1 is.

[ Voor 37% gewijzigd door mazz op 21-01-2009 20:21 ]

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • RedPixel
  • Registratie: Januari 2004
  • Laatst online: 22-09 15:47
leeg? Dan zou int projectleider = student[i].getProjectleider(); moeten miepen...
Wat staat er in getProjectleider();

Wordt Projectleider in student[i] wel geset?

I see red pixels.


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Dit staat er in student

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Student {

    private String Naam;
    private String IDcode;
    private String Email;
    private int projectleider;
    public Student() {
    }

      public int getProjectleider() {
        return projectleider;
    }

    public void setProjectleider(int Projectleider) {
        this.projectleider = Projectleider;
    }


Maar hoezo zou die al moeten gaan miepen? Er kunnen toch lege waardes in een array zitten?

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

Waarom is Projectleider een int? Kan je er geen boolean van maken? Dan kan je True of False gebruiken. Of is het de bedoeling dat het straks verwijst naar iets anders?

Acties:
  • 0 Henk 'm!

  • RedPixel
  • Registratie: Januari 2004
  • Laatst online: 22-09 15:47
mazz schreef op woensdag 21 januari 2009 @ 20:29:
Dit staat er in student

Maar hoezo zou die al moeten gaan miepen? Er kunnen toch lege waardes in een array zitten?
Er kunnen wel lege waardes in een array zitten, maar die kun je volgens mij niet toekennen aan een int...

I see red pixels.


Acties:
  • 0 Henk 'm!

  • GroeneEend
  • Registratie: Januari 2009
  • Niet online
Ik snap de code eerlijk gezegd niet.

code:
1
if (projectleider == ' ')


komt neer op
code:
1
if (projectleider == 32)


Is dat werkelijk de bedoeling?

Misschien kunnen we beter helpen als je uitlegt wat de bedoeling is?

Acties:
  • 0 Henk 'm!

  • bomberboy
  • Registratie: Mei 2007
  • Laatst online: 01:33

bomberboy

BOEM!

mazz schreef op woensdag 21 januari 2009 @ 19:40:
Ik heb een klein stukje code gemaakt met daarin if en else statements.
Het gekke is dat als ik inlog met het juiste username en pass dat hij dan wel in een if valt.
Voer ik niet de juiste gebruikersnaam / pass in dan krijg ik opeens niets meer terug en wordt elke if of else genegeerd.
Klinkt alsof je om een of andere reden uit die loop geknald bent. Maar dat zou afgaande op de code niet mogen gebeuren behalve door een Runtime Exception.
mazz schreef op woensdag 21 januari 2009 @ 20:29:
Maar hoezo zou die al moeten gaan miepen? Er kunnen toch lege waardes in een array zitten?
Misschien een heel stomme vraag, maar je checkt in je loop niet of elementen in die ob-array null zijn, en bovenstaande opmerking doet me dan twijfelen...

Ik vermoed dat je de code runt in je Netbeans-IDE? Verschijnt er geen enkele Error of Exception in je console?
De symptomen die je beschrijft zouden bijvoorbeeld ook voorkomen als er in die loop een nullpointer-exception optreedt. Maar dan moet je die uiteraard te zien krijgen in je console.

Tot slot, gebuik eens "the poor man's debugger" nl. System.out.println(); en schrijf bij elke regel code uit wat je doet of denkt te doen. Ik heb de indruk dat je nog een beetje Java aan het leren bent en hoewel er veel betere tools zijn zoals een echte debugger, kan dit misschien wel eens leerrijk zijn.

Zowel voor jou als voor ons, wat op basis van bovenstaande code fragmentjes denk ik niet dat we kunnen zeggen wat er al dan niet fout gaat.

Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Bedankt voor je reactie.
Ik ben inderdaad java aan het leren voor school.

In de console krijg ik helemaal niets aan output. Ik kan wel eens even aan de slag gaan met de ''poor mans debugger" :)

Ik zie wel dat het in de for loop mis gaat.
Maakt niet uit waar ik een lijntje print, hij verdomd het gewoon.

Bij het compilen krijg ik wel dit
Note: C:\Documents and Settings\Administrator\Bureaublad\t2\src\view\userinterface.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

Maar dat is het niet..

Anders moet ik morgen maar even met een docent kijken :+

[ Voor 51% gewijzigd door mazz op 21-01-2009 22:49 ]

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • bomberboy
  • Registratie: Mei 2007
  • Laatst online: 01:33

bomberboy

BOEM!

mazz schreef op woensdag 21 januari 2009 @ 22:43:
Ik zie wel dat het in de for loop mis gaat.
Maakt niet uit waar ik een lijntje print, hij verdomd het gewoon.
De lengte van de array ob is 0 ?

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
Weet je zeker dat je de code wel runt in debug modes en niet in release modus/run van Netbeans. In release/run loopt netbeans gewoon het programma door totdat hij een fout vind en stopt dan. Niet altijd wordt er dan aan output gedaan (er is dan namelijk geen debuglistener). Wees even zeker van dat je op debug klikt helemaal omdat je nu ook de poor mans debugger gebruikt (ik neem aan dat dat betekend dat je gewoon meldingen print ipv echt te debuggen met breakpoints).

Het is dus niet de groene "play" toets die je moet hebben :) .

Run anders je code is vanaf een console:
code:
1
2
javac MijnClass.java
java MijnClass


Anyway succes.

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
De breakpoints doen allemaal niets evenals de watches die ik heb gezet.
Zelfs nu in debug mode gerund en vanaf de commandline maar wat uitspugen? Ho maar :S

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • Appesteijn
  • Registratie: Juni 2001
  • Niet online
Dus een Student is wel of geen Projectleider?

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (int i = 0; i < ob.length; i++) {
  student[i] = (Student) ob[i];

  int projectleider = student[i].getProjectleider();
        
        
  if (projectleider == 1) {
    Main.rechten = true;
    Main.error = false;
    JOptionPane.showMessageDialog(null, "Je bent ingelogd \n Je hebt groepsleider rechten");
  } else {
    Main.rechten = false;
    Main.error = false;
    JOptionPane.showMessageDialog(null, "Je bent ingelogd \n Je hebt geen groepsleider bevoegdheden.");
  } 


Anders zet je boven je if statement even een System.out.println als je de debugger niet aan de praat krijgt.

Let wel even op dat met jou code de 'else' alleen bij de tweede if hoort. Ander moet je 'else if' gebruiken.

Acties:
  • 0 Henk 'm!

  • kasper_vk
  • Registratie: Augustus 2002
  • Laatst online: 08-04 20:48
Heb je ook een breakpoint vlak vóór de for-lus gezet? Dan weet je namelijk zeker of die for-lus uberhaubt wel bereikt wordt en zie je ook snel of hij ook wel (minimaal 1 keer) de for-lus ingaat.

Zet voor controle anders ook een breakpoint op de eerste regel van je main-methode van het programma --> als Netbeans daar niet langs lijkt te komen lijkt het me dat Netbeans helaas toch niet in debug mode draait.

The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 08:38

Haan

dotnetter

Als dit voor school is, stel ik voor dat je aan de leraar vraagt om uit te leggen hoe een debugger werkt. Dat zou eigenlijk les 1 of 2 moeten zijn bij een cursus leren programmeren.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Haan schreef op donderdag 22 januari 2009 @ 12:05:
Als dit voor school is, stel ik voor dat je aan de leraar vraagt om uit te leggen hoe een debugger werkt. Dat zou eigenlijk les 1 of 2 moeten zijn bij een cursus leren programmeren.
Bij ons ging het destijds lekker 'hardcore' in VI en met java en javac. Een IDE gebruiken was gewoon niet toegestaan. Best bizar, ik heb pas tijdens m'n stage (met Visual Studio) geleerd hoe fijn een debugger (en ctrl-spatie for that matter) is.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 16:37

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik weet niet of het bij ons destijds niet was toegestaan, maar we werkten er iig niet mee. Gewoon textpad, zonder debugging. Schandalig eigenlijk, fatsoenlijk debuggen is een vak apart, kun je maar beter zo snel mogelijk mee beginnen.

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.


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 23-09 18:21

Sebazzz

3dp

Tsja, het is gewoon net alsof je spellingscontrole voor je Franse taalvak gebruikt. Een debugger maakt het leven makkelijker, en je moet bij de basics blijven. Zo wordt er in ieder geval beredeneerd :)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 00:23

Salandur

Software Engineer

veel docenten weten denk ik te weinig van debuggen af om er wat goed mee te kunnen. dus daarom wordt het ook niet geleerd tijdens de opleiding. Hoewel in mijn laatste jaar er wel docenten waren die van het textpad af stapten en IDE's gingen gebruiken, maar dat was nog niet gebruikelijk bij de studenten. ik weet niet hoe het nu is, maar dat was in ieder geval 4 jaar geleden

[ Voor 10% gewijzigd door Salandur op 22-01-2009 15:35 ]

Assumptions are the mother of all fuck ups | iRacing Profiel


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Sebazzz schreef op donderdag 22 januari 2009 @ 15:25:
Tsja, het is gewoon net alsof je spellingscontrole voor je Franse taalvak gebruikt. Een debugger maakt het leven makkelijker, en je moet bij de basics blijven. Zo wordt er in ieder geval beredeneerd :)
Tja, ik vind het gewoon een verkeerde redenatie. Het goed leren omgaan met een debugger is belangrijk voor iedere developer. Je kunt als developer nog altijd terugvallen op een ghetto-debugger (print statements) als dat nodig is. Ik vind het danook niet te vergelijken met een taal als frans. Komt nog eens bij dat als je een officiele brief moet schrijven je er toch altijd een woordenboek bij pakt.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 08:38

Haan

dotnetter

Spellingscontrole is imo niet zo'n goede vergelijking..

Ik zie coden in notepad, vergeleken met coden in een IDE als de vergelijking tussen een verhaal met pen en papier schrijven, of in een text-editor op de PC. Met pen en papier heb je geen hulpmiddelen als spellingscontrole, makkelijk tekst wijzigen, copy/paste e.d. , met een text-editor heb je dat wel.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 19-09 10:19
mazz schreef op donderdag 22 januari 2009 @ 00:37:
De breakpoints doen allemaal niets evenals de watches die ik heb gezet.
Zelfs nu in debug mode gerund en vanaf de commandline maar wat uitspugen? Ho maar :S
Weet je zeker dat je deze knop gebruikt om te debuggen: Afbeeldingslocatie: http://i39.tinypic.com/20qi2vt.jpg

Of probeer eens cltr+F5.

Zet ook even een breakpoint op een punt waar je zeker weet dat je langs komt (dus bijvoorbeeld op "student[i] = (Student) ob[i];" )

Lees ook dit eens door: http://www.netbeans.org/kb/55/using-netbeans/debug.html

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 23-09 15:51
De vraag is ga je ook door die for-loop.
Check dit met (b.v.)
Java:
1
2
3
4
5
6
7
JOptionPane.showMessageDialog(null, "Controle aantal: " + ob.length );
for (int i = 0; i < ob.length; i++) { 
  student[i] = (Student) ob[i]; 

  int projectleider = student[i].getProjectleider(); 
  ...
}


Wat is de waarde bij goede/slechte login.

let the past be the past.

Pagina: 1