import java.util.*;
import java.text.*;
public class DvdRental1 {
static Scanner input = new Scanner(System.in).useDelimiter("\r\n");
static DecimalFormat fmt=new DecimalFormat("0.00");
public static void main(String[] args)
{
String [] movies = new String[10];
movies[0] = "DRAG ME TO HELL";
movies[1] = "PARANORMAL ACTIVITY";
movies[2] = "SHUTTER";
movies[3] = "P.S I LOVE YOU";
movies[4] = "500 DAYS OF SUMMER";
movies[5] = "THE NOTE BOOK";
movies[6] = "2012";
movies[7] = "THE DAY AFTER TOMORROW";
movies[8] = "GAMER";
showmainmenu();
} // END OF MAIN
private static void showmainmenu()
{
int perday;
int mainmenu;
System.out.println("Welcome to TP DVD Rental Service");
System.out.println("");
System.out.println("---DVD RENTAL SYSTEM---");
System.out.println("-----------------------");
System.out.println("(1) Rent a DVD");
System.out.println("(2) Exit");
System.out.print("Please select your choice(1-2):");
mainmenu= input.nextInt();
if(mainmenu ==1 )
{
showmenu();
}
else if (mainmenu == 2)
{
goExit();
System.out.println("You have exited");
}
else
System.out.println("Please key in 1,2");
}
}
这是我第一次使用Java
。我还有另一个问题,这是否是使程序以这种方式运行的正确方法,我正在使用的showMenu()
方法是否会导致程序无休止地运行?非常感谢。因为我的大部分内容都使用方法来做循环。
答案 0 :(得分:1)
使数组成为在任何方法之外声明的实例变量。换句话说,有这个:
static Scanner input = new Scanner(System.in).useDelimiter("\r\n");
static DecimalFormat fmt=new DecimalFormat("0.00");
String[] movies = new String[10];
您可以在任何方法之外将其初始化为实例变量,如下所示:
String movies[] = new String[] { "DRAG ME TO HELL", "PARANORMAL ACTIVITY",
"SHUTTER", "P.S I LOVE YOU", ... };
或者您可以像现在一样将元素添加到mainmenu()
内的数组中。
然后您可以在showmainmenu()
以及goExit()
中访问它并循环浏览它,在执行System.exit()
之前打印每个条目或在{{1}结束时执行任何操作}}。您可以完全按照以下方式执行后者(打印goExit();
数组):
movies
或者,您可以将对数组的引用作为参数传递给各种方法。
答案 1 :(得分:0)
将电影作为参数传递到showmainmenu(),然后将其传递到goExit()或使其成为全局变量,在这种情况下,您可以在任何地方打印它。
答案 2 :(得分:0)
您有两种选择,您可以进行以下操作:
String [] movies = new String[10];
全球 变量,因此您可以从班级的任何位置引用它:
static Scanner input = new Scanner(System.in).useDelimiter("\r\n");
static DecimalFormat fmt=new DecimalFormat("0.00");
String [] movies = new String[10];//add here
您的第二个选择是将数组传递给showmainmenu()
方法。它看起来如此:
showmainmenu(movies);
} // END OF MAIN
private static void showmainmenu(String [] movies)
{
//rest of code
最后,为了打印它,你必须遍历数组并打印每个值:
else if (mainmenu == 2)
{
for(int i = 0; i<movies.length; i++){
System.out.println(movies[i]);
}
goExit();
System.out.println("You have exited");
}
Read more about loops over arrays here.
我有另一个问题,这是否是正确的方法 程序以这种方式运行,我正在使用的showMenu()方法也是如此 程序无休止地运行?
是的,我建议do-while loop:
private static void showmainmenu()
{
int perday;
int mainmenu;
System.out.println("Welcome to TP DVD Rental Service");
System.out.println("");
System.out.println("---DVD RENTAL SYSTEM---");
System.out.println("-----------------------");
do{
System.out.println("(1) Rent a DVD");
System.out.println("(2) Exit");
System.out.print("Please select your choice(1-2):");
mainmenu= input.nextInt();
//code
else if (mainmenu == 2)
{
goExit();
System.out.println("You have exited");
break;//exits do-while
}
//code
}while(true)
答案 3 :(得分:0)
如果我理解正确,你可以将每个电影集合分别定义为全局变量,如:
static String[] thrillerMovies = new String[] {"2012","THE DAY AFTER TOMORROW","GAMER"};
static String[] loveMovies = new String[] {"P.S I LOVE YOU","500 DAYS OF SUMMER","THE NOTEBOOK"};
static String[] horrerMovies = new String[] {"DRAG ME TO HELL","PARANORMAL ACTIVITY","SHUTTER"};
并定义如下方法以显示子菜单:
private static void showSubmenu(String SubMenu,String[] movies) {
System.out.println("");
System.out.println( SubMenu + "MOVIE SELECTIONS");
System.out.println("------------------------");
for(int i=0;i<movies.length;i++) {
System.out.println("<" +(i+1)+"> " + movies[i]);
}
System.out.println("<4> Back to Main Menu");
System.out.println("------------------------");
System.out.print("Please select desired movie <1-3>:");
}
您可以通过在if
中调用上述方法来打印选项
if (menu == 1) {
showSubmenu("HORROR", horrerMovies);
-
else if (menu == 2) {
showSubmenu("LOVE", loveMovies);
-
else if (menu == 3) {
showSubmenu("THRILLER", thrillerMovies);
同样,如果您愿意,可以在子菜单选项的情况下执行相同的操作。 @Mohammad S.和@Martin Dinov已经在那里提到了一些观点。