从 String[] 和 int 生成 String

Make String from String[] and int

String callsign;
String airlines[] = {"DLH","BER","TUI","EZY","ACA","AAL","FDX","SKW","ABY","SWR"};
public void assignCallsign()
{
    Random r = new Random();
    int airline = r.nextInt(10);
    int number = r.nextInt(900) + 100;
    callsign = airlines[airline] + number;
}

字符串数组 airlines[] 包含 3 个表示航空公司的字母。 随机整数航空公司用于选择这些航空公司之一。随机整数应指定飞机呼号的最后 3 个字符。

我正在尝试获得 "BER219"、"AAL814" 等输出,但在执行 class 时,字符串呼号仍然为空:/

Java 按值传递变量。如果您在此函数之外测试呼号变量的值,那么它将为空,因为您已在 assignCallsign 方法之外将其设置为空。

要解决此问题,您可以:

  • return 函数的呼号值并用它设置一个变量。

    public String assignCallSign() {
    return airlines[airline] + number;
    }
    String callsign = assignCallSign()
    
  • 将 callsign 设为 class 的成员变量,您的代码将按预期运行:

    private String callsign;
    

如果不看到正在使用它的 class,很难看出问题。

推测这是某个 "Flight" 对象的一部分。这表明正在正确设置和显示呼号。

public static void main(String[] args) {
    Flight flight = new Flight();
    flight.assignCallsign();
    System.out.println(flight);
}

private static class Flight {
    private static final String AIRLINES[] = { "DLH", "BER", "TUI", "EZY", "ACA", "AAL", "FDX", "SKW", "ABY", "SWR" };
    private String callsign;
    public void assignCallsign() {
        Random r = new Random();
        int airline = r.nextInt(10);
        int number = r.nextInt(900) + 100;
        callsign = AIRLINES[airline] + number;
    }
    @Override
    public String toString() {
        return "Flight [callsign=" + callsign + "]";
    }
}

输出

Flight [callsign=SKW534]