2013-11-14 114 views
0

想知道是否有人可以帮我查询我有吗?无论如何,在java中为我创建一个Promt给用户,允许他们更改displayOptions方法中的选项?基本上我试图做的是改变退出到完成,如果这是有道理的?在java中替换文本?

import java.util.Scanner; 

public class part3 { 


     private static void displayOptions() { 
      System.out.println("Choose your option:"); 
      System.out.println("**** West End Theatre Booking System ****"); 
     System.out.println("========================================="); 
     System.out.println("1. List all shows and availability"); 
     System.out.println("2. Book and print ticket(s)"); 
     System.out.println("3. Cancel a ticket"); 
     System.out.println("4. Display theatre/show seating map"); 
     System.out.println("5. Show income/accounts"); 
     System.out.println("6. Assign new show to theatre"); 
     System.out.println("7. Exit"); 
    } 

    //-------------------------------------------------- 


    private static int getUserOption(String prompt) { 
     int option; 
     Scanner k=new Scanner(System.in); 
     System.out.print(prompt); 
     option=k.nextInt(); 
     return option; 
    } 
    //------------------------------------------------- 


    public static void main(String[] args) { 

     int selection,wick,oli,phant,wickremain,oliremain,phantremain; 
     selection=0;   
     wickremain=24;  wick=0; 
     oliremain=40;  oli=0; 
     phantremain=32;  phant=0; 

     do { 

     displayOptions(); 
     selection=getUserOption("Option? (1-7): "); 

     System.out.println(); 

     if(selection==1){ 


     System.out.println("Wicked (Apollo)"); 
     if (wick>=24){ 
     System.out.println("Sold Out"); 
    } else {  
     System.out.println(wick +" ticket(s) Sold, "+ wickremain+ " ticketAvailable"); 
    } 


     System.out.println("Oliver! (Drury Lane)"); 
     if (oli>=40){ 
     System.out.println("Sold Out"); 
    } else {  
     System.out.println(oli +" ticket(s) Sold, "+ oliremain +" tickets  Available"); 
    } 


     System.out.println("Phantom of the Opera (Her Majesty's)"); 
     if (phant>=32){ 
     System.out.println("Sold Out"); 
    } else {  
     System.out.println(phant +" ticket(s) Sold, " +phantremain+ " tickets Available"); 
     } 
     } 

回答

0

如果所有的选项保存为一个字符串数组比你可以要求用户输入他们希望改变其索引位置。所以:

String[] menuOptions = { option1, option2, etc.}; 
for(int i = 0; i < menuOptions.length - 1; i++) 
    System.out.println((i+1) + ". " + menuOptions[i]); 

System.out.println("What option would you like to change?"); 

int temp = k.nextInt(); 

System.out.println("What would you like that option to become?"); 

menuOptions[temp-1] = k.nextLine(); 
0

基于我如何理解你的问题,这是我会怎么解决这个问题:

只需添加一个检查到displayOptions()方法。

首先,您必须向班级添加一个字段,以了解您是否要显示完成。

public class part3 { 
    private static boolean showFinish = false; 

然后一个if子句添加到方法:

if (showFinish) { 
    System.out.println("7. Finish"); 
} else { 
    System.out.println("7. Exit"); 
} 

最后,当你想改变来完成调用之前把这个displayOptions()

showFinish = true; 
0

让它变成一个变量?

String optionSeven = "blah"; 

然后更新optionSeven其中取决于一个条件?

0

您可以使用一个选择语句

String exit = "Exit"; 
String finish = "Finish"; 
String doh = "DOHH!"; 

if (someCondition){ 
    System.out.println("7: " + exit); 
} else if (someOtherCondition){ 
    System.out.println("7: " + finish); 
} else { 
    System.out.println("7: " + doh); 
} 
0

就我的理解,您希望能够在运行时动态更改菜单选项的文本。我相信你最好的选择是为你的菜单项使用一个列表或其他容器,并且调用一个方法来改变给定项目的文本。例如,你可能有一个成员变量称为选项:

private List<String> options = getDefaultOptions();

而且你可以有生成默认选项的方法:

public List<String> getDefaultOptions() { 
    List<String> defaultOptions = new ArrayList<>(); 
    defaultOptions.add("List all shows and availability"); 
    defaultOptions.add("Book and print ticket(s)"); 
    defaultOptions.add("Cancel a ticket"); 
    defaultOptions.add("Display theatre/show seating map"); 
    defaultOptions.add("Show income/accounts"); 
    defaultOptions.add("Assign new show to theatre"); 
    defaultOptions.add("Exit"); 
    return defaultOptions; 
} 

你displayOptions()方法将进而成为:

public void displayOptions() { 
    System.out.println("Choose your option:"); 
    System.out.println("**** West End Theatre Booking System ****"); 
    System.out.println("========================================="); 

    int optionNumber = 0; 
    for (String option : options) { 
     System.out.println(++optionNumber + ". " + option); 
    } 
} 

然后,在某些时候,您可以提示用户更改特定选项的文本,并调用此方法,并使用它们的inp utted文字:

public void changeOptionText(int optionNumber, String newText) { 
    options.set(optionNumber-1, newText); 
} 

... 

// Used like this 
changeOptionText(7, "finish"); 

当然,你想要做一些边界检查并覆盖其他一些情况下,但这应该让你开始。