oop java метод последовательного увеличения числа - PullRequest
0 голосов
/ 12 марта 2020

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

это то, что я имею до сих пор в отношении метода заявки

public class Ticket
{
    public static final String PREFIX = "CAR";
    public static int number = 1000;

    //instance variables
    private String ticketNumber;

public Ticket(){
         ticketNumber = generateTicketNumber();
        }
public String getTicketNumber(){
        return ticketNumber;
    }

private String generateTicketNumber(){
        number = number++;
        ticketNumber = PREFIX +number;
        return ticketNumber;
    }

Мне сказали использовать переменную stati c (которая у меня есть) для создания и хранения счетчика для сгенерируйте часть номера билета, увеличьте переменную stati c и назначьте ее вместе со строковым префиксом в поле ticketNumber. Когда я создаю объект, он не увеличивается до CAR1001, он просто переходит в CAR1000. Должен ли я попробовать l oop некоторое время для этого?

Ответы [ 2 ]

4 голосов
/ 12 марта 2020

number = number++; не оценивается, как вы думаете. На самом деле это означает, что правая часть увеличивает number, но number++ также является выражением, значение которого равно old значению number, прежде чем будет выполнено увеличение. Затем из-за присваивания number = ... старое значение присваивается number с левой стороны, отменяя приращение.

Так что вместо этого вы должны просто написать number++;, что просто увеличивает переменную .

1 голос
/ 12 марта 2020

Если я что-то упустил, я думаю, вы слишком усложнили это. Все, что вам нужно, это PREFIX и number. Объединить PREFIX с number и увеличить number. Это можно сделать за один шаг, например,

public class Ticket {
    private static final String PREFIX = "CAR";
    private static int number = 1000;

    public String getTicketNumber() {
        return PREFIX + number++;
    }
}

или, возможно, немного проще для чтения,

public String getTicketNumber() {
    try {
        return PREFIX + number;
    } finally {
        number++;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...