我如何显示飞机座位表?

时间:2015-04-15 13:47:30

标签: java arrays eclipse for-loop

这是我的代码:

import java.util.Scanner;

public class AirlineReservation {

    public static void main(String[]args) {
        System.out.println("Enter n:");
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        int[][] airplane = new int[n][4];

        for(int i = 1; i < 4; i++) {
            System.out.printf("%3d\t", i);
        }

        for(int j = 0; j <= n; j++) {
            System.out.println((j) + " -" + "       -" + "       -" + "      -");
        } 
    }
}

我想要的是在顶部显示四个数字(它确实如此),让用户输入一些数字并使其成为行数(它的行数)和&#34; - &#34;每个开放部分。

我不知道怎么做这个,我在第一行有一些我不想要的j int。有人可以帮我一把吗?

这是输出输出:

Enter n:
5
  1       2       3      4  
1 -       -       -      -

2 -       -       -      -

3 -       -       -      -

4 -       -       -      -

5 -       -       -      -

3 个答案:

答案 0 :(得分:4)

您的代码中有几处错误。

第一个for循环应该从1结束时开始(包括两个),所以我添加了一个=。

for (int i = 1; i <= 4; i++) {
    System.out.printf("%3d\t", i);
}

第二个循环应该从0(包括)开始,到n(排除)或从1到n(都包括在内)结束。 所以我把它改成了以下内容。此外,对于每一行,您必须提供所有座位(4)。所以这个新代码:

for (int row = 1; row <= n; row++) {
    System.out.print(j); // Print the number of row
    for (int seat = 1; seat <= 4; seat++) {
        System.out.print(" -"); // Print each seat
    }
    System.out.println(""); // Go to the next line
}

但是这只打印空面。 最好的应该是打印当前的平面配置(对于空座位,x表示非空座位)。通过以下代码可以假设飞机[行] [座位]对于免费座位是0而对于占用座位是不同的值:

for (int row = 1; row <= n; row++) {
    System.out.print(j); // Print the number of row
    for (int seat = 1; seat <= 4; seat++) {
        System.out.print(" "); // Print separator
        if (airplane[row - 1][seat - 1] == 0) {
            System.out.print("-");
        } else {
            System.out.print("X");
        }
    }
    System.out.println(""); // Go to the next line
}

答案 1 :(得分:2)

只需控制你的泡沫:

public static void main(String[]args) {
    System.out.println("Enter n:");
    Scanner scanner = new Scanner(System.in);

    int n = scanner.nextInt();
    int[][] airplane = new int[n][4];

    for(int i = 1; i <= 4; i++) {
        System.out.printf("\t%d\t", i);
    }
    System.out.println("");

    for(int j = 1; j <= n; j++) {
        System.out.printf("%d", j);
        for (int k = 1; k <= 4; k++) {
            System.out.print("\t-\t");
        }
        System.out.println("");
    } 
} 

这可能是一种非常简洁的方法,但它确实产生了你想要的输出。

结果:

enter image description here

答案 2 :(得分:2)

重写您编码为:

import java.util.Scanner;

public class AirlineReservation {

    public static void main(String[]args) {
        System.out.println("Enter n:");
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        int[][] airplane = new int[n][4];

        for(int i = 1; i <= 4; i++) {//Change here.
            System.out.printf("%3d\t", i);
        }
        System.out.println();//Change here.

        for(int j = 1; j <= n; j++) {
            System.out.println((j) + " -" + "       -" + "       -" + "       -");//change Here.
        } 
    }
}