4 svar
326 visningar
josefinanord är nöjd med hjälpen
josefinanord 103 – Fd. Medlem
Postad: 26 mar 2019 16:06

Arrayer och generera lösenord

Uppgiften jag har problem med är att jag ska skriva en metod som skapar en array av char som ska generera lösenord som är mellan 8-12 tecken långt, innehåller minst en liten och en stor bokstav, och minst en siffra 0-9.

Sedan ska jag skriva en main och testa metoden, samt loopa den och generera 100 lösenord.

Min kod:

import java.util.Random;
class Password {
public static char[] generatePassword( ) {
char[] options = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9',
'!','@','#','$','%','^','&','*','_','=','+','-','/'};
char[] randomPassword = new char [12];
Random r = new Random();
for(int i = 0; i < 12; i++) {
randomPassword[i] = options[r.nextInt(options.length)];
  }

}

public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
System.out.print(Password.generatePassword(randomPassword[i]));

   }
  }
}

 

När jag kompilerar får jag error på randomPassword i sista raden där jag försöker skriva ut alla lösenorden, vet inte om jag missat eller glömt något, uppskattar alla tips!

gus1973 6 – Fd. Medlem
Postad: 26 mar 2019 16:51

Du försöker skicka med argument i main-metoden. Din metod generatePassword tar inga argument. Du kan ta bort så att det endast står "System.out.println(generatePassword());" i main-metoden. Eftersom metoden generatePassword ska returnera char[] så behöver du skriva "return randomPassword" efter for-loopen! 

Sedan för att uppfylla kravet om 8-12 tecken, liten och stor bokstav och siffra, så behöver du dela upp options. Gör tre olika 4 olika med diverse tecken!

Lycka till :)

josefinanord 103 – Fd. Medlem
Postad: 28 mar 2019 14:25

Jag ändrade lite i koden och har nu denna kod:

class Passwords{

//Method to generate password
public static char[] generatePassword(char[] rndPw){
rndPw = new char [12]; //Array

String lower = "abcdefghijklmnopqrstuvwxyz";
String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String digits = "0123456789";
String options = lower + upper + digits;

//Loop and assign to array
for(int i = 0; i < rndPw.length; i++){
Random rnd = new Random();
char c = options.charAt(rnd.nextInt(options.length()));
rndPw[i] = c;
}
return rndPw;
}


//Main
public static void main(String[] args){

char[] a = generatePassword(rndPw);


System.out.println(a);

}
}

 

Koden funkar som den ska när jag bara testar den i min main utan arrayen, men får error när jag försöker kompilera denna kod :/

Laguna Online 28472
Postad: 28 mar 2019 14:36

Visa det exakta felmeddelandet, säg inte bara att det blir "error".

josefinanord 103 – Fd. Medlem
Postad: 28 mar 2019 15:32

Fick error angående argumentet när jag försökte kalla på metoden i min main, (required: char[] - Found: no arguments) men löste det genom att ta bort argumentet från metod-raden och nu funkar det som det ska!

Svara Avbryt
Close