![](/img/trans.png)
[英]How do I get my program to print out all of my input from a do while loop?
[英]How do I use array to print out my values when i exit my program?
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()
方法會導致程序無休止地運行嗎? 非常感謝。 因為我的大部分內容都使用方法進行循環。
使數組成為實例變量,可以在任何方法之外聲明。 換句話說,具有以下功能:
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()
或任何你在年底做goExit();
。 您可以像下面這樣簡單地完成后者( movies
數組的打印):
for(int i=0;i<movies.length;i++) {
System.out.println(movies[i]);
}
或者,您可以將對數組的引用作為各種方法的參數傳遞。
可以將電影作為參數傳遞到showmainmenu(),然后將其傳遞到goExit()或使其成為全局變量,在這種情況下,可以將其打印在任何位置。
您有兩種選擇,可以進行以下操作:
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");
}
我還有一個問題,這是否是使程序以這種方式運行的正確方法,因為我正在使用的showMenu()方法會導致程序無休止地運行嗎?
是的,我建議做一個do-while循環 :
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)
如果我理解正確,則可以將每個電影收藏分別定義為全局變量,例如:
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已經提到了一些觀點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.