Springen naar inhoud

Java programma: wachtwoorden


  • Log in om te kunnen reageren

#1

doantsen

    doantsen


  • >100 berichten
  • 110 berichten
  • Ervaren gebruiker

Geplaatst op 13 maart 2011 - 16:45

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:

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.");
		
	}

}

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Kravitz

    Kravitz


  • >1k berichten
  • 4042 berichten
  • Moderator

Geplaatst op 13 maart 2011 - 18:32

Verplaatst naar programmeren
"Success is the ability to go from one failure to another with no loss of enthusiasm" - Winston Churchill

#3

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 13 maart 2011 - 19:18

"+i+" moet denk ik "++i" zijn
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

#4

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 13 maart 2011 - 19:26

"+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.

#5

ZVdP

    ZVdP


  • >1k berichten
  • 2097 berichten
  • VIP

Geplaatst op 13 maart 2011 - 19:37

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 „)
"Why must you speak when you have nothing to say?" -Hornblower
Conserve energy: Commute with a Hamiltonian

#6

peterbill

    peterbill


  • >25 berichten
  • 58 berichten
  • Ervaren gebruiker

Geplaatst op 16 maart 2011 - 13:30

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:

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;
	}
 }





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures