2014-03-20 3 views
0

Для программы, которую я пишу для школы, один из расширений говорит, что мне нужно понять способ редактирования аргумента case, если я вхожу в качестве администратора, я создал два метода, потому что это казалось лучшим способом сделать это.Редактирование дела из другого метода?

метод один (тот, что мне нужно изменить):

public static double costSqM(Console c) { 
    double price = 0; 
    int choice; 
    c.println("#. Type    Cost per sq.m."); 
    c.println("1. Low pile carpet   $ "); 
    c.print(pileCost, 5, 2); 
    c.println("2. Shag rug     $ "); 
    c.print(rugCost, 5, 2); 
    c.println("3. Parquet     $ "); 
    c.print(parquetCost, 5, 2); 
    c.println("4. Linleum     $ "); 
    c.print(leumCost, 5, 2); 
    c.println("5. Hardwood     $ "); 
    c.print(hardwoodCost, 5, 2); 
    c.println("Please enter your choice: "); 
    choice = c.readInt(); 
    while (choice < 1 && choice > 5) { 
     c.println("That is not a valid choice. Please try again!"); 
     choice = c.readInt(); 
    } 
    switch (choice) { 
    case 0: 
     admin(c); 
    case 1: 
     price = 18.75; 
    case 2: 
     price = 11.05; 
    case 3: 
     price = 14.35; 
    case 4: 
     price = 10.40; 
    case 5: 
     price = 28.15; 
    } 
    return price; 
} 

метод два (один я редактирую от):

public static void admin(Console c) { 
    int choice = 0, priceChange = 0; 
    cls(c); 
    c.println("Hello admin. What changes would you like to make?"); 
    c.println("1. Change a price."); 
    c.println("2. Add an item."); 
    c.println("3. Remove an item."); 
    switch(choice){ 
    //Changing the price of an item 
    case 1: 
     c.print("What price would you like to change? "); 
     c.println("1. Low Pile Carpet."); 
     c.println("2. Shag Rug."); 
     c.println("3. Parquet."); 
     c.println("4. Linleum."); 
     c.println("5. Hardwood."); 
     switch(priceChange){ 
     case 1: 
      c.println("Please enter the new price for the Low Pile Carpet: "); 
      pileCost = c.readInt(); 
     case 2: 
      c.println("Please enter the new price for the Shag Rug: "); 
      rugCost = c.readInt(); 
     case 3: 
      c.println("Please enter the new price for the Parquet: "); 
      parquetCost = c.readInt(); 
     case 4: 
      c.println("Please enter the new price for the Linluem: "); 
      leumCost = c.readInt(); 
     case 5: 
      c.println("Please enter the new price for the Hardwood: "); 
      hardwoodCost = c.readInt(); 
     } 
    //Adding an item 
    case 2: 
    //Removing an item 
    case 3: 

    } 

Если это невозможно сделать из другого метод, но это из того же метода, пожалуйста, объясните это тоже, и я могу просто сделать его одним большим методом. Благодарю.

+0

Пожалуйста, отметьте ваши вопросы на языке, который вы используете. Является ли эта Java? – Barmar

+0

да извините первый вопрос, который я разместил здесь: D – Austin

+0

Пожалуйста, измените тег для заданного вопроса, иначе кто-то проголосует. –

ответ

0

Вы можете использовать флаг для режима администратора. установите его в true, и вы находитесь в режиме администратора:
boolean admin = true.

Тогда вы могли бы просто проверить, admin is true, и если это так, напечатайте admin, если нет ... напечатайте эти нормальные выходы.

Пример в случае, если пользователь ввел 1:

case 1: 
    if(admin) 
    { //admin, change price 
     c.println("Please enter the new price for the Low Pile Carpet: "); 
     pileCost = c.readInt(); 
    } 
    else 
    { //non-admin, set price 
     price = 18.75; 
    } 
break; //important! don't forget the break-keyword 

Если вы забыли добавить break в конце тематического заявления все из следующих утверждений (например, для 2: 3,4,5 ..).

Это должно быть вдохновение, вы должны выяснить, остальные сами :)

О, конечно, вы будете в конечном итоге только один метод этот путь, который меньше, чем два, прежде чем объединены, так как логика не дублируется.

+0

Спасибо! Этот способ имеет гораздо больше смысла, чем я это делал. Единственная реальная большая проблема, с которой я сталкиваюсь, заключается в удалении или добавлении аргумента case, который администратор захочет добавить? – Austin

+0

Как именно вы «добавили» что-то в консоль? Если есть такие ключи, как 0, которые предназначены только для администратора, просто проверьте, является ли admin = true, а если нет, ничего не делайте. – Zhedar

+0

Это то, что он говорит в моем файле назначения «4. Можете ли вы придумать способ поместить типы и затраты напольного покрытия в формат, который позволит« администратору »программы изменять цены, добавлять и удалять элементы и т. Д. " Поэтому я должен был бы также добавить новый тип пола или удалить их. Есть идеи? – Austin

Смежные вопросы