建造一个公共汽车座位"行和列"

时间:2018-02-25 00:52:24

标签: java arrays algorithm for-loop logic

我想建立一个巴士座位服务。喜欢: 座位

 1A 1B 1C 1D
 2A 2B 2C 2D
 3A 3B 3C 3D
 3A 3B 3C 3D
 4A 4B 4C 4D 
 5A 5B 5C 5D 
 6A 6B 6C 6D 
 7A 7B 7C 7D 

取决于用户想要插入的行数。

我的代码运行良好,但我想改进它。任何建议都会很好。注意:我讨厌我在没有大括号的情况下编写嵌套for循环的方式。

代码:

static void busRow(int numberOfRows){
    String letters[] = {"A","B","C","D"};
    if (numberOfRows<=0){
        System.out.println("Without Seats? It isn't a bus! please insert number of rows");
    }

    for (int i =1; i<=numberOfRows;i++){
        for (int j =0;j<letters.length;j++)
            System.out.print(i+""+letters[j]+" ");
        System.out.println();
    }

}

2 个答案:

答案 0 :(得分:2)

该程序相对简单且编写得很好,对两个嵌套for循环也没有很多变化。您已经通过缩进和括号维护了良好的编程实践,因此无需改进!

您可以尝试创建可能对您有用的有用功能,例如座位预留或删除。例如,用户想要坐在座位2B中。您可以捕获用户的输入和&#34;保留&#34;座位带有 X ,所以你的行看起来如下:

2A X 2C 2D

答案 1 :(得分:2)

您的嵌套for循环与座位生成算法一样高效。

我建议的唯一一点变化就是将letters数组从String[]更改为char[],假设所有座位标签都是单字母字母。这种变化非常轻微,但其原因在于,因为char是原始数据类型,只占用 2个字节,而String是实际对象,即使是空的,至少需要 32字节

这是一个非常特别的变化,在这个例子中不会给你带来太大的改变,但我认为这样做有利于将来编码每个字节的编码。

希望这是值得的!

<强>参考:

How much memory does a string use in Java 8?