Борьба с получением идентификатора от пользователя - PullRequest
0 голосов
/ 14 декабря 2018

Моя идея сделать, чтобы сделать уникальный идентификатор для каждого пользователя.Он содержит как символы, так и целые числа.Первые 2 буквы ID будут инициалами имени пользователя, 4 следующих должны быть годами, а 3 последних - случайными.

public String getUserID(){
    String[] ID = new String[9];
    ID[0] = String.valueOf(name.charAt(1));
    ID[1] = String.valueOf(surname.charAt(2));
    int years = Date_Of_Birth.getYear();
    int[] numOfYears = new int[4];
    for(int i = 0; i < 4; i++)
    {
        int a = years%10;
        a = numOfYears[i];
        years /= 10;
        ID[i] = numOfYears[i]; // Java.lang.string, not int
    }
    Random random = new Random();
    int a = Integer.toString(random.nextInt(9)); // Java.lang.string, not int
    int b = random.nextInt(9) + 1;
    int c = random.nextInt(9) + 1;
    ID[7] = a;
    ID[8] = b;
    ID[9] = c;

}

Я борюсь с заменой целых чисел на строки, а также наоборот.Я пробовал несколько вещей, таких как String.valueOf () или целые числа, но все это кажется безнадежным

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Используйте StringBuilder для создания только одного String вместо String[] массива.

Random random = new Random();
StringBuilder builder = new StringBuilder();
builder.append(name.charAt(1))
       .append(surname.charAt(2))
       .append(Date_Of_Birth.getYear())
       .append(100 + random.nextInt(900)));
return builder.toString();
0 голосов
/ 14 декабря 2018

После изменений код выглядит так, насколько я понимаю, я думаю, что все в порядке.

public String getUserID(){
        String[] IDletters = new String[2];
        IDletters[0] = String.valueOf(name.charAt(1));
        IDletters[1] = String.valueOf(surname.charAt(2));
        int years = Date_Of_Birth.getYear();
        int[] numOfYears = new int[4];
        for(int i = 0; i < 4; i++)
        {
            int a = years%10;
            a = numOfYears[i];
            years /= 10;
        }
        Random random = new Random();
        int a = random.nextInt(9)+1;
        int b = random.nextInt(9)+1;
        int c = random.nextInt(9)+1;
        String wholeID = IDletters[0]+IDletters[1]+numOfYears[0]+numOfYears[1]+numOfYears[2]+numOfYears[3]+ a + b + c;
        return wholeID;

    }
0 голосов
/ 14 декабря 2018

Проверьте это:

public String getUserID(){
    StringBuilder sb = new StringBuilder();

    sb.append(name.substring(0, 1));
    sb.append(surname.substring(0, 1));
    sb.append(String.valueOf(Date_Of_Birth.getYear()));

    Random random = new Random();
    for (int i = 1; i <= 3; i++) {
        int a = random.nextInt(9) + 1;
        sb.append(String.valueOf(a));
    }
    return sb.toString();
}

он использует SringBuilder, чтобы шаг за шагом построить идентификатор:

  • добавляет 1-й символ name
  • добавляет 1-й символ из surname
  • добавляет год (при условии, что 4 101 цифры возвращаются Date_Of_Birth.getYear())
  • внутри цикла добавляет 3 однозначных случайных числа
  • возвращает строку StringBuilder
...