/ / Я загублений, куди я звідси йду? - java

Я втрачений, звідки я йду звідси? - java

Мій учитель попросив, щоб ми використовували символи ASCII від 33 до 127, щоб створити пароль, довжиною якого n. Я заблукав і не впевнений, куди податися звідси. Ось що я маю досі:

 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++) {

Відповіді:

0 для відповіді № 1

Ви не використовуєте Random об'єкт правильно, оскільки, як це є, ви можете генерувати негативні числа.

Це один із способів реалізації того, що ви описуєте:

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 для відповіді № 2

Ось оновлена ​​версія:

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

зміни:

  • Змінна кількість не потрібна.
  • Довжина не використовувалася.
  • Об'єкт сканера не було закрито, що спричинило витік ресурсу.