1 van 1

Java programma: wachtwoorden

Geplaatst: zo 13 mar 2011, 16:45
door doantsen
Ik wil een programma schrijven dat vraagt naar hoeveel wachtwoorden dat je wil ingeven en vervolgens kijkt of die wachtwoorden wel correct zijn.

Een wachtwoord is correct als hoofd- en kleine letters samen minstens 6 zijn en er minstens 2 cijfers in zitten.

Ik heb echter een probleem! Als ik het programma uitprobeer, en ik vul bijvoorbeeld in 5 ( als aantal paswoorden) gaat het programma direct naar persoon 2. Wat zou mijn fout kunnen zijn?

CODE:

Code: Selecteer alles

public class Oef2b {

public static void main(String[] args) {

Input inp = new Input();

int aantalgeldige = 0;

int letter = 0;

int cijfer = 0;

int i;

int aantal;

char karakter;

System.out.println("Hoeveel passwoorden wenst te controleren op geldigheid?");

aantal = inp.readInt();

for (i=1;i<=aantal;i++){

System.out.println("Persoon "+i+", geef uw wachtwoord in.");

karakter = inp.readChar();

while (karakter!='\n'){

if ((karakter>='a')&&(karakter<='z')) letter++;

if ((karakter>='A')&&(karakter<='Z')) letter++;

if ((karakter>=0)&&(karakter<+9)) cijfer++;

karakter = inp.readChar();

}

if ((letter>=6)&&(cijfer>=2)) aantalgeldige ++;

}

System.out.println("Er zijn "+aantalgeldige+" wachtwoorden.");

}

}

Re: Java programma: wachtwoorden

Geplaatst: zo 13 mar 2011, 18:32
door Kravitz
Verplaatst naar programmeren

Re: Java programma: wachtwoorden

Geplaatst: zo 13 mar 2011, 19:18
door Bart
"+i+" moet denk ik "++i" zijn

Re: Java programma: wachtwoorden

Geplaatst: zo 13 mar 2011, 19:26
door Xenion
"+i+" moet denk ik "++i" zijn
Lol nee ;) Dan increment je i dubbel: 1x in de loop en dan nog eens in dat print-statement.

Ik zie ook niet direct wat het probleem kan zijn.

Wat is het probleem eigenlijk? Begint de teller op 2 of aanvaardt het programma geen input van 1 en springt het dan naar 2?

Ik zou dat paswoord ook niet karakter per karakter uitlezen eigenlijk. Lees het gewoon uit als String en loop dan door de karakters van die string.

Re: Java programma: wachtwoorden

Geplaatst: zo 13 mar 2011, 19:37
door ZVdP
Misschien zit er nog een enter in de Input nadat je het aantal wachtwoorden hebt ingegeven?

Hoe werkt die klasse Input eigenlijk?

(btw: je kan ook Character.isDigit(char) en Character.isLetter(char) gebruiken om ook andere karakters buiten het standaard alfabet toe te laten, zoals ç en ã)

Re: Java programma: wachtwoorden

Geplaatst: wo 16 mar 2011, 13:30
door peterbill
Als nu iemand op backspace drukt tijdens het invoeren van een wachtwoord zijn alsnog al de letters geteld, ik zou het anders aanpakken en de input eerst in een string stoppen, en vervolgens deze string checken. Ook zou ik niet eerst het aantal wachtwoorden dat je zou willen invullen vragen, maar er gewoon 'n do-while block van maken, zodat de gebruiker zelf kan kiezen wanneer ie geen wachtwoorden meer wilt testen. Ik zou het zoiets doen:

Code: Selecteer alles

import java.util.*;

public class Oef2b {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);

String unchecked;

String repeat;

do {

System.out.println("Voer een wachtwoord in die u wenst te " +

   "controleren.");

unchecked = input.next();

if(passwordCheck(unchecked))

System.out.println("Geldig wachtwoord.");

else

System.out.println("Ongeldig wachtwoord.");

System.out.println("Wenst u nogmaals een wachtwoord in te voeren" +

   "? [y/n]");

repeat = input.next();

if(!(repeat.charAt(0) == 'y'))

System.exit(1);

}

while(true);

}

static boolean passwordCheck(String password) {

int character = 0;

int digit = 0;

for(int i = 0; i < password.length(); i++) {

if(Character.isLetter(password.charAt(i)))

character++;

if(Character.isDigit(password.charAt(i)))

digit++;

}

if(character >= 4 && digit >= 2)

return true;

else

return false;

}

 }