Môj učiteľ požiadal, aby sme použili znaky ASCII od 33 do 127 na vygenerovanie hesla, ktoré je n dlhé. Stratil som sa a nie som si istý, kam ísť odtiaľto. To je to, čo mám doteraz:
import java.util.*;
public class PasswordGenerator {
public static void main(String[]args){
Random random = new Random();
Scanner input = new Scanner(System.in);
System.out.print("Enter password length: ");
int length = input.nextInt();
StringBuilder password = new StringBuilder(length);
int count = random.nextInt(127-33+1)-33"
if(length<0) {
System.out.println(Invalid password length: "+length);
}
else {
for(int i = 33; i<126+1; i++) {
odpovede:
0 pre odpoveď č. 1Nepoužívate Random
objekt správne, pretože tak ako je, môžete generovať záporné čísla.
Toto je jeden zo spôsobov, ako implementovať to, čo popisujete:
if(length<0) /*handle error*/;
StringBuilder password = new StringBuilder();
for(int i = 0; i < length ; i++) {
password.append((char) (random.nextInt(127-33+1)+33));
}
0 pre odpoveď č. 2
Tu je aktualizovaná verzia:
public static void main(String[] args) {
Random random = new Random();
try(Scanner input = new Scanner(System.in);){
System.out.print("Enter password length: ");
int length = input.nextInt();
StringBuilder password = new StringBuilder();
if (length < 0) {
System.out.println("Invalid password length: " + length);
}
for(int i = 0 ; i < length ; i++){
password.append((char) (random.nextInt(127-33) + 33));
}
System.out.println(password.toString());
}
}
zmeny:
- Premenná počtu nebola potrebná.
- Dĺžka sa nevyužívala.
- Objekt skenera nebol zatvorený, čo spôsobilo únik zdrojov.