2016-03-05 59 views
0

我正尝试使用菜单系统创建一个小型酒店应用程序。到目前为止,用户被要求输入一个房间号码(0-9)和一个房间名称,一旦输入,我希望用户返回到其他菜单选项可以输入的菜单。我不认为其他菜单选项目前正在要么:(名称后的菜单循环,Java

这里是我到目前为止的代码:

package hotel; 
import java.util.*; 

public class Hotel2 { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 

     Room[] myHotel = new Room[10]; 
     myHotel[0] = new Room(); 
     myHotel[1] = new Room(); 
     myHotel[2] = new Room(); 
     myHotel[3] = new Room(); 
     myHotel[4] = new Room(); 
     myHotel[5] = new Room(); 
     myHotel[6] = new Room(); 
     myHotel[7] = new Room(); 
     myHotel[8] = new Room(); 
     myHotel[9] = new Room(); 

     String roomName; 
     String menuEntry = null; 
     int roomNum = 0; 
     String[] hotel = new String[11]; 
     for (int x = 0; x < 10; x++) hotel[x] = ""; 

     initialise(hotel); 

     while (roomNum < 10) 
     { 

      System.out.println("Please enter one of the following options:\n1) Add customer\n2) Delete customer from room\n3)View all empty rooms\n4) Find a customer\n5) Load program from text file\n6) Order rooms alphabetically\n7) Store program into text file\n8) View all rooms\nInput:"); 
      menuEntry = input.next(); 

      while (menuEntry.equals("1")) 
      { 
       System.out.println("Enter room number (0-9):"); 
       roomNum = input.nextInt(); 

       if (roomNum < 10) 
       { 
         System.out.println("Enter name for room " + roomNum +" :") ; 
         roomName = input.next(); 
         hotel[roomNum] = roomName ;  
       } 
      } 


      if (menuEntry.equals("V")) 
      { 
       for (int x = 0; x < 10; x++) 
       { 
       System.out.println("room " + x + " occupied by " + hotel[x]); 
       } 
      } 

      if (menuEntry.equals("E")); 
      { 

      } 

      if (menuEntry.equals ("D")) 
      { 
      System.out.println("Enter the room number which you would like to delete a customer from:"); 
      roomNum = input.nextInt(); 
      hotel[roomNum] = "empty"; 
      } 
     } 
    } 

    private static void initialise(String hotelRef[]) { 
     for (int x = 0; x < 10; x++) hotelRef[x] = "empty"; 
     System.out.println("initilise\n"); 
    } 
} 
+0

你应该正确地格式化代码。 – MikeCAT

+0

@MikeCat固定感谢 – Oscar

+0

我建议不要担心你的文本用户界面和更多关于该问题的API。让您的酒店和房间抽象化,用户界面将变得简单。两个提示:没有幻数(例如10个房间)并使用循环来填充该房间阵列。 – duffymo

回答

1

while循环为menuEntry1不同的等待,但你永远不会改变menuEntry内循环,将其更改为do while循环

do { 
    System.out.println("Please enter one of the following options:\n1) Add customer\n2) Delete customer from room\n3)View all empty rooms\n4) Find a customer\n5) Load program from text file\n6) Order rooms alphabetically\n7) Store program into text file\n8) View all rooms\nInput:"); 
    menuEntry = input.next(); 
    System.out.println("Enter room number (0-9):"); 
    roomNum = input.nextInt(); 
    if (roomNum < 10) 
    { 
     System.out.println("Enter name for room " + roomNum +" :") ; 
     roomName = input.next(); 
     hotel[roomNum] = roomName ;  
    } 
} while (menuEntry.equals("1")); 

你也应该插入的选项进入循环休息,并匹配选项的条件s在菜单中。

while

System.out.println("Please enter one of the following options:\n1) Add customer\n2) Delete customer from room\n3)View all empty rooms\n4) Find a customer\n5) Load program from text file\n6) Order rooms alphabetically\n7) Store program into text file\n8) View all rooms\nInput:"); 
menuEntry = input.next(); 

while (menuEntry.equals("1")) { 
    System.out.println("Enter room number (0-9):"); 
    roomNum = input.nextInt(); 
    if (roomNum < 10) 
    { 
     System.out.println("Enter name for room " + roomNum +" :") ; 
     roomName = input.next(); 
     hotel[roomNum] = roomName ;  
    } 

    System.out.println("Please enter one of the following options:\n1) Add customer\n2) Delete customer from room\n3)View all empty rooms\n4) Find a customer\n5) Load program from text file\n6) Order rooms alphabetically\n7) Store program into text file\n8) View all rooms\nInput:"); 
    menuEntry = input.next(); 
} 
+0

感谢您的回复,我将如何完全展示这一点?我是新来的Java – Oscar

+0

它似乎仍然不能正常工作,我想我的循环设置错了? – Oscar

+0

@JamesPatterson尝试'do while'循环 – Guy

1

像这样的事情的另一种选择帮助你的代码看起来更清洁和理解

while (roomNum < 10 && menuEntry.equals("1")){ 
    //then perform your if statement 
    // or preferabley use a switch(menuEntry){} 
}