>source

내가 완성한 과제가 있지만 문제를 해결하는 방식이 약간 최적화 될 수 있다고 생각합니다. 또한 return 문을 제대로 활용하고 있는지 모르겠습니다. 나는 코딩에 비교적 익숙하지 않아 지식이 없지만 누군가가 나를 도와 줄 수 있는지 알아보고 싶어하는지 배우고 싶습니다. 대답은 환상적 일 것입니다.

여기에 문제가 있습니다. 행당 12 개의 행과 4 개의 좌석이있는 비행기의 비행기 좌석을 나타내는 2 차원 배열을 표시, 검사 및 조작하는 프로그램을 작성하십시오. 다음 작업에 대한 쓰기 메서드 :

fillSeatsRandomly : 0에서 1 사이의 임의 값으로 배열을 채 웁니다. 0은 빈 좌석을 나타내고 1은 예약 된 좌석을 나타냅니다.

displaySeats : 비행기의 모든 좌석을 행별로 표시합니다. 빈 좌석은 0으로 표시되고 지정석은 X로 표시됩니다. 왼쪽에 1에서 12까지의 행 번호에 대한 세로 머리글과 A에서 D까지의 가로 열 머리글 (열의 4 개 좌석에 대해)을 만듭니다.

isSeatAvailable : 행 번호를 나타내는 정수와 A부터 D까지 좌석을 나타내는 문자를받습니다.이 메서드는 지정된 좌석을 사용할 수 있는지 테스트하고 그렇지 않으면 false를 반환합니다. 이 방법은 좌석 선택이 유효하지 않은 경우 오류 메시지를 표시합니다.

reserveSeat : 지정된 좌석을 예약합니다. 두 개의 매개 변수 (행 번호를 나타내는 정수와 A에서 D까지의 좌석 번호를 나타내는 문자)를받습니다.이 메소드는 좌석이 유효하지 않은 경우 오류 메시지를 표시합니다.

seatsAvailInRow : 주어진 행에서 사용 가능한 좌석 수를 계산하고 반환합니다. 행 번호를 나타내는 정수를받습니다.

findRowWithTwoSeats :이 메서드는 두 개의 인접한 사용 가능한 좌석이있는 가장 가까운 행을 찾습니다. 인접한 두 좌석을 사용할 수없는 경우 0을 반환합니다.

countSeatsAvail : 비행기에서 사용할 수있는 모든 좌석의 수를 계산하고 해당 번호를 반환합니다.

countTakenSeats : 비행기에 예약 된 모든 좌석의 수를 계산하고 해당 번호를 반환합니다.

내 코드는 다음과 같습니다.

    public static void main(String[] args) {
        int[][] plane;//this is the array that will be plugged into the methods
        plane = fillSeatsRandomly();//creates the 12x4 array that will be used
        displaySeats(plane);//shows the user what seats are available/taken
        isSeatAvailable(plane);//allows the user to see if a seat is available
        reserveSeat(plane);//allows the user to reserve a seat
        displaySeats(plane);//shows the user their seat has been reserved
        seatsAvailInRow(plane);//shows how many seats are avail in given row
        findRowWithTwoSeats(plane);//finds closest row with adjacent seats
        countSeatsAvail(plane);//counts how many seats are available
        countTakenSeats(plane);//counts how many seats are taken
    }
    public static void displaySeats(int seats[][]) {//displays the seats
        System.out.print("\tA  \tB  \tC  \tD \n");
        for (int row = 0; row < seats.length; row++) {
            System.out.print(row + 1 + "");
            for (int seatNum = 0; seatNum < seats[row].length; seatNum++) {
                if (seats[row][seatNum] == 1) {
                    System.out.print("\tX  ");
                } else {
                    System.out.print("\t0  ");
                }
            }
            System.out.println();
        }
    }
    public static int[][] fillSeatsRandomly() {//fills seats randomly, returns
        //an array of seats either filled or empty 
        int[][] rndm = new int[12][4];
        for (int[] rndm1 : rndm) {
            for (int col = 0; col < rndm1.length; col++) {
                rndm1[col] = (int) Math.round(Math.random());
            }
        }
        return rndm;//return the array
    }//end of fillSeatsRandomly
    public static boolean isSeatAvailable(int[][] plane) {//asks user for input
        //checks if seat is available, returns true if it is and false if not
        Scanner input = new Scanner(System.in);
        int rowNum;//row number of the seat chosen
        int colNum = 4;//column of the seat chosen
        char seatSelect;//character of the seat chosen
        String str;//used to get char value for switch
        System.out.println("Choose which row you would like to check (1-12)");
        rowNum = input.nextInt() - 1;
        System.out.println("Choose which seat you would like: A,B,C, or D (Case"
                + " Sensitive)");
        str = input.next();
        seatSelect = str.charAt(0);
        switch (seatSelect) {
            case 'A':
                colNum = 0;
                break;
            case 'B':
                colNum = 1;
                break;
            case 'C':
                colNum = 2;
                break;
            case 'D':
                colNum = 3;
        }//end of switch
        if (colNum > 3 || colNum < 0 || rowNum > 11 || rowNum < 0) {
            System.out.println("Invalid Selection");
            return false;
        }//end of if
        if (plane[rowNum][colNum] != 0) {
            System.out.println("Sorry, seat is taken");
            return false;
        } else {
            System.out.println("This seat is available");
            return true;
        }//end of else
    }//end of isSeatAvail
    public static int reserveSeat(int[][] plane) {//asks user for input
        //reserves a seat based on user input, returns updated value to array
        Scanner input = new Scanner(System.in);
        int rowNum;//Row number of seat chosen
        int colNum = 4;//Column number of seat chosen
        char seatSelect;//Character of seat chosen
        String str;//used to get char value for switch
        System.out.println("Choose which row you would like to reserve (1-12)");
        rowNum = input.nextInt() - 1;
        System.out.println("Choose which seat you would like: A,B,C, or D (Case"
                + " Sensitive)");
        str = input.next();
        seatSelect = str.charAt(0);
        switch (seatSelect) {
            case 'A':
                colNum = 0;
                break;
            case 'B':
                colNum = 1;
                break;
            case 'C':
                colNum = 2;
                break;
            case 'D':
                colNum = 3;
        }//end of switch
        if (colNum > 3 || colNum < 0 || rowNum > 11 || rowNum < 0) {
            System.out.println("Invalid Selection");
        }//end of if
        if (plane[rowNum][colNum] != 0) {
            System.out.println("Sorry, seat is taken");
        } else {
            System.out.println("Your seat has been reserved");
        }//end of if else
        return plane[rowNum][colNum] = 1;//return updated array value
    } //end of reserveSeat
    public static int seatsAvailInRow(int[][] plane) {//checks how many seats
        //are available in a row determined by user input returns how many seats
        Scanner input = new Scanner(System.in);
        int rowNum;
        int rowSum = 0;
        int avail;
        System.out.println("Choose which row to see how many seats are"
                + " available (1-12)");
        rowNum = input.nextInt() - 1;
        for (int[] plane1 : plane) {
            rowSum = 0;
            for (int j = 0; j < plane1.length; j++) {
                rowSum += plane[rowNum][j];
            } //end of nested for
        } //end of for
        avail = 4 - rowSum;
        System.out.println("There is " + avail + " seat(s) available in that "
                + "row");
        return avail;//returns number of seats available
    }//end of seatsAvailInRow
    public static int findRowWithTwoSeats(int[][] plane) { //finds the closest
        //row that has 2 adjacent seats, returns row num, or 0 if none
        for (int i = 0; i < plane.length; i++) {
            for (int j = 0; j < plane[i].length; j++) {
            if (plane[i][0] + plane[i][1] == 0 || plane[i][1] + plane[i][2] == 0
                        || plane[i][2] + plane[i][3] == 0) {
                    System.out.println("Row " + (i + 1)
                            + " has adjacent seats");
                    return i;//returns row num with adjacent seats
                }//end of if
            } //end of nested for
        } //end of for
        return 0;//returns 0 if there is no adjacent seats
    }//end of findRowWithTwoSeats
    public static int countSeatsAvail(int[][] plane) {//counts how many seats
        //are available on the plane, returns int value for number of seats
        int count = 0;//used to keep track of how many seats are available
        for (int i = 0; i < plane.length; i++) {
            for (int j = 0; j < plane[i].length; j++) {
                if (plane[i][j] == 0) {
                    count++;
                }//end of if
            }//end of nested for
        }//end of for
        System.out.println("There are " + count + " seats available");
        return count;//returns the number of seats available
    }//end of countSeatsAvail
    public static int countTakenSeats(int[][] plane) {//counts number of seats
        //taken on the plane, returns int value for number of seats taken
        int count = 0;//used to keep track of how many seats are taken
        for (int i = 0; i < plane.length; i++) {
            for (int j = 0; j < plane[i].length; j++) {
                if (plane[i][j] == 1) {
                    count++;
                }
            }//end of nested for
        }//end of for
        System.out.println("There are " + count + " seats taken");
        return count;//returns number of seats taken
    }//end of countTakenSeats
}//end of class

  • 답변 # 1

    주요 피드백은 올바른 방법으로 제공하지 않는다는 것입니다. 예약 시스템에서 내부적으로 사용할 수있는 방법 만 생성하면됩니다. 전체 예약 시스템을 만들 필요는 없습니다.

    정의부터 시작해야합니다. Plane 일부 "가있는"것으로 써 seats :

    class Plane {
        int[][] seats = new int[12][4];
    }
    
    

    그때, fillSeatsRandomly 특정 작업에서 작동하는 작업을 작성하기를 원하는 것처럼 들립니다. Plane 좌석 상태를 업데이트 할 수 있습니다.

    class Plane {
        int[][] seats = new int[12][4];
        public void fillSeatsRandomly() {
            for ( int row = 0; row < seats.length ; row ++ ) {
                // ...
            }
        }
    }
    
    

    등등. 교수님이 코드를 작성하고 main 자신을 위해. 할 수 있고 아마도 그래야하지만 main 이해를 증명하는 기능. 다만하지마사용자에게 프롬프트합니다. 대신 무작위 평면을 사용하여 하드 코딩 된 작업을 수행하십시오.

    class Plane {
        int[][] seats = new int[12][4];
        public void fillSeatsRandomly() {
            for ( int row = 0; row < seats.length; row ++ ) {
                // ...
            }
        }
        public boolean isSeatAvailable(int row, char column) {
            // ...
            // return (... == 0);
        }
        // ...
        public static void main(String[] args) {
            Plane p = new Plane();
            p.fillSeatsRandomly();
            p.displaySeats();
            if (p.isSeatAvailable(4, 'C')) {
                p.reserveSeat(4, 'C');
            }
            // ...
        }
    }
    
    

    나는 단어를 떨어 뜨렸다 static 모두에서 main . 그 이유를 이해합니까? 그렇지 않다면 자신을 새로 고치십시오.

관련 자료

  • 이전 페이지가 새로 고침 될 때마다 실행할 Chrome 스 니펫 가져 오기
  • 다음 HTML/CSS/JavaScript의 스네이크 게임