2013-12-22 4 views
0

Я пишу программу, которая имитирует простую деятельность банковского счета, и мне было интересно, как это сделать, чтобы, если я создаю новую учетную запись без каких-либо параметров, она получает случайный идентификационный номер 7digit, который отображается как Строка. Как я это делаю, я получаю только [email protected] в выводе. С нетерпением ждем любой справки и дополнительных комментариев по этому вопросу, так как это первый, который я опубликовал на этом сайте.Поле со случайным значением int

import java.util.Random; 

    class Account { 

    String id; 
    double stan; 
    int num; 
    static int counter; 

    public Account() { 
     **id = randomId().toString();** 
     stan = 0; 
     num = ++counter; 

    } 

    public Account(String id) { 
     this.id = id; 
     stan = 0; 
     num = ++counter; 

    } 

    public Account(String id, double mon) { 
     stan = 0; 
     this.id = id; 
     this.stan = mon; 
     num = ++counter; 

    } 

    **static String randomId() { 
     Random rand = new Random(7); 
     return String.valueOf(rand);** 
    } 

    String getId() { 
     return id; 
    } 

    double getStan() { 
     return stan; 
    } 

    int getNum() { 
     return num; 
    } 

    @Override 
    public String toString() { 
     return "Account's id " + getId() + " and balance " + getStan(); 
    } 
} 

public class Exc7 { 

    public static void main(String[] args) { 
     Account account = new Account("0000001"), 
       acount0 = new Account("0000002", 1000), 
       acount1 = new Account(); 




     System.out.println(account + "\n" + account0 + "\n" + account1); 
    } 

} 

ответ

0

Используйте этот код:

Random rand = new Random(7); 
return String.valueOf(Math.abs(rand.nextInt())); 

Прямо сейчас вы представляете экземпляр Random.

Вместо этого напечатайте String представление математического абсолюта следующего int вашего случайного воли.

Важное значение имеет часть Math.abs, иначе у вас могут быть отрицательные числа.

+0

Во-первых, спасибо. Во-вторых, я также ошибся предположить, что, если я поместил 7 в Random, он даст мне число с семью цифрами. Должен ли я просто положить 9999999 для получения номера в этом диапазоне или сделать это по-другому? – Konrad

+0

@ Konrad добро пожаловать! Честно говоря, я был отвлечен и обманут конструктором «Случайный»: действительно, он не определяет количество цифр, а скорее случайное семя. Вы можете запустить [здесь] (http://stackoverflow.com/questions/5392693/java-random-number-with-given-length) для определенного количества цифр - иначе просто усечь свой 'String'. – Mena

2

Изменить return String.valueOf(rand);

Для

return String.valueOf(rand.nextInt()); 

Причина:

Вы передаете случайный объект в valueOf метод, а не значение вам нужно. Вызовите метод nextInt(), чтобы получить желаемое случайное значение.

0

Использование

return String.valueOf(rand.nextInt()); 

иначе вы получите строковое представление Random объекта, а не случайного int, что он может производить.

Смежные вопросы