/ / Stratil som sa, kam odtiaľto pôjdem? - java

Som stratený, kam odtiaľto idem? - java

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ď č. 1

Nepouží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.