【发布时间】:2017-02-10 19:43:22
【问题描述】:
我有一个带有基于文本的用户菜单的小程序。一个 switch case 正在为我做输入验证,因为用户只输入我验证的整数。
菜单如下所示:
----------------------
(1) Manage articles
(2) Manage customers
(3) Close
----------------------
Please enter your number:
这个菜单是通过一个额外的方法创建的。
当我输入1 时,我调用另一个包含另一个do-while 循环的方法,这次验证文章菜单等等。第二个菜单如下所示:
Manage articles
----------------------
(1) Show
(2) Add
(3) Change
(4) Delete
(5) Back
----------------------
Please enter your number:
但是要切换回上一个菜单,我总是创建一个新的类实例并调用第一个方法来显示第一个菜单。
结果是:当我在菜单之间多次切换时,我总是创建一个新的程序实例。
我认为有更好的方法来进行这种多层阅读,并且想知道如何在这里表现得更好。
更新:
package articlemanagement.menu;
import articlemanagement.model.Artikel;
import articlemanagement.verwaltung.ArticleManagement;
import java.util.LinkedList;
import java.util.Random;
import java.util.Scanner;
public class UserInterface {
private ArticleManagement articleManagement;
private UserInterface() {
this.articleManagement = new ArticleManagement();
}
public static void main(String[] args) {
UserInterface userInterface = new UserInterface();
userInterface.showDefaultInterface(userInterface);
System.out.println("See you next time!");
}
private void showDefaultInterface(UserInterface userInterface) {
Scanner scanner = new Scanner(System.in);
int input = 0;
do {
System.out.println("Welcome");
System.out.println("----------------------");
System.out.println("(1) Articles");
System.out.println("(2) Customers");
System.out.println("(3) Shop");
System.out.println("(4) End");
System.out.println("----------------------");
System.out.print("Please enter a number:");
input = scanner.nextInt();
switch (input) {
case 1:
userInterface.showArtikelInterface(userInterface);
break;
case 2:
System.out.println("todo");
break;
case 3:
System.out.println("todo");
break;
case 4:
System.out.println("Bye");
break;
default:
break;
}
} while (input != 4);
System.exit(1);
}
/**
* Show overview
*/
private void showArtikelInterface(UserInterface userInterface) {
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Manage your articles");
System.out.println("----------------------");
System.out.println("(1) Show");
System.out.println("(2) Add");
System.out.println("(3) Modify");
System.out.println("(4) Delete");
System.out.println("(5) Go Back");
System.out.println("----------------------");
System.out.print("Bitte geben Sie eine Zahl für Ihr Menü ein:");
int input = scanner.nextInt();
switch (input) {
case 1: // show
zeigeArtikel();
break;
case 2: // add
System.out.println("todo");
break;
case 3: // modify
System.out.println("todo");
break;
case 4: // delete
System.out.println("todo");
break;
case 5: // back
System.out.println("Going back...");
// bad style?
userInterface.showDefaultInterface(userInterface);
break;
default:
break;
}
} while (scanner.nextInt() != 5);
}
}
【问题讨论】:
-
制作方法
static. -
已经考虑过了,但这不是很糟糕的风格吗?
-
不一定。您没有显示您的代码,所以我们无法知道。
-
我添加了一个要点,现在可能更清楚了。
-
问题中的邮政编码,而不是外部来源。
标签: java user-interface optimization menu