2017-09-12 3 views
0
import java.util.Scanner; 

public class Movies { 
    static Scanner scan = new Scanner(System.in); 
    static String movies[] = {"1. IT\tP200", "2. The Battleship Island\tP300", "3. Annabelle Creation\tP180", "4. Woke Up Like This\t100"}; 
    static String name; 
    static int seats=0; 
    static int number=0; 
    public static void getName(){ 
     System.out.print("Please enter your Name: "); 
     name = scan.nextLine(); 
     System.out.println("\nWelcome to MOVIEWORLD, " +name); 
     getMovieTitle(); 

    } 

public static int getMovieTitle(){ 

    System.out.println("\nNOW SHOWING"); 
    for (String movie : movies) { 
     System.out.println(movie); 
    } 
    char choice; 
    System.out.print("Would you like to get a ticket? (Y/N)"); 
    choice= scan.next().charAt(0); 
    switch(choice){ 
     case 'y': 
     case 'Y': 
      System.out.print("Please select a movie: "); 
      number = scan.nextInt(); 
      System.out.println("You have Selected "+movies[number-1].substring(3,movies[number-1].length())); 
      getSeats(); 
      break; 


     case 'n': 
     case 'N': 
      System.out.println("Thank you!"); 
      System.exit(0); 
      break; 
     default: 
      getMovieTitle(); 
      break; 
    } 
    return number; 
} 

public static int getSeats(){ 
    System.out.print("How many seats would you like? "); 
    int seat = scan.nextInt(); 
    System.out.printf("Reserved # of seats is %d ",seat); 
    return seat; 
} 



public static void main(String[] args){ 
    System.out.println("\tMOVIEWORLD"); 
    System.out.println("________________________"); 
    getName(); 

    int mynum; 
    mynum=getMovieTitle(); 
    int mynum2; 
    mynum2=getSeats(); 
    int mov1 = 200; 
    int mov2 = 300; 
    int mov3 = 180; 
    int mov4 = 100; 
    int cost; 
    int money; 
    int change; 
    char c; 
    System.out.print("Print Receipt?(y/n)"); 
    c= scan.next().charAt(0); 
    switch(c){ 
     case 'y': 
     case 'Y': 
    if(mynum == 1){ 
     cost=mov1*mynum2; 
     System.out.print("Total: Php"+cost); 
     System.out.print("Received cash is: Php"); 
     money=scan.nextInt(); 
     change=money-cost; 
     System.out.print("Your change is: Php"+change); 

    } 
    else if(mynum == 2){ 
     cost=mov2*mynum2; 
     System.out.print("Total: Php"+cost); 
     System.out.print("Received cash is: Php"); 
     money=scan.nextInt(); 
     change=money-cost; 
     System.out.print("Your change is: Php"+change); 
    } 
    else if(mynum == 3){ 
     cost=mov3*mynum2; 
     System.out.print("Total: Php"+cost); 
     System.out.print("Received cash is: Php"); 
     money=scan.nextInt(); 
     change=money-cost; 
     System.out.print("Your change is: Php"+change); 
    } 
    else if(mynum == 4){ 
     cost=mov4*mynum2; 
     System.out.print("Total: Php"+cost); 
     System.out.print("Received cash is: Php"); 
     money=scan.nextInt(); 
     change=money-cost; 
     System.out.print("Your change is: Php"+change); 
    } 
    break; 
     case 'n': 
     case 'N': 
      System.out.println("Thank you"); 
      break; 

     default: 
       System.out.println("Thank you"); 
       System.exit(0); 

} 
} 
} 

Ich versuche, die Kosten, das Geld erhalten und die Änderung zu erhalten. Aber ich habe Probleme bei der Verwendung der zurückgegebenen Werte in meinen Methoden. Nach der Auswahl, wie viele Plätze ich wollte, wird das Programm einfach beendet.So verwenden Sie den von einer Methode zurückgegebenen Wert

Dies sind die Werte, die ich in meiner Hauptmethode verwenden möchte. Erste ist die Nummer

System.out.print("Please select a movie: "); 
      number = scan.nextInt(); 
      System.out.println("You have Selected "+movies[number-1].substring(3,movies[number-1].length())); 
      getSeats(); 


     case 'n': 
     case 'N': 
      System.out.println("Thank you!"); 
      System.exit(0); 
     default: 
      getMovieTitle(); 

    } 
    return number; 

Zweitens ist die Sitze, so dass ich es mit der Zahl multiplizieren kann.

public static int getSeats(){ 
    System.out.print("How many seats would you like? "); 
    int seats = scan.nextInt(); 

    return seats; 
} 
+0

Was denken Sie 'Rückkehr number' tut? Es gibt "Nummer" zurück. Sie müssen den zurückgegebenen Wert in einer Variablen in dem Code speichern, in dem Sie die Funktion aufrufen. An diesem Punkt haben Sie den zu verwendenden Wert. Finde ein Tutorial. –

+0

Sie müssen am Ende jedes Falls in Ihrer 'switch' Anweisung eine' break; 'eingeben, andernfalls führen Sie nicht nur den ausgewählten Fall, sondern auch jeden folgenden Fall aus. –

+0

int mynum; Mynum = getMovieTitle(); ist das korrekt? den Wert von _number_ in der Methode getMovieTitle zurückgeben? @KenWhite –

Antwort

0
  1. Sie benötigen eine break:

    case 'Y': 
        System.out.print("Please select a movie: "); 
        number = scan.nextInt(); 
        System.out.println("You have Selected "+movies[number- 
         1].substring(3,movies[number-1].length())); 
        getSeats(); 
        break; 
    
  2. Sie müssen die Anzahl der Sitze auf die globalen seats Variablen zugewiesen, die Sie am Anfang des Programms erstellt, anstatt einem lokalen variabel:

    public static int getSeats(){ 
    System.out.print("How many seats would you like? "); 
    seats = scan.nextInt(); 
    
    return seats; 
    } 
    

Update:

  1. In Ihrer aktualisierten Frage, sind Sie die zurückgegebenen Werte von getMovieTitle() und getSeats() mit mynum und mynum2 im Hauptverfahren erfassen, aber immer noch die Methoden innerhalb getName() Aufruf und getMovieTitle() jeweils. Gerade diese Anrufe Kommentar:

    public static void getName(){ 
        System.out.print("Please enter your Name: "); 
        name = scan.nextLine(); 
        System.out.println("\nWelcome to MOVIEWORLD, " +name); 
        //getMovieTitle(); 
    
    } 
    

    und

    case 'Y': 
        System.out.print("Please select a movie: "); 
        number = scan.nextInt(); 
        System.out.println("You have Selected "+movies[number-1].substring(3,movies[number-1].length())); 
        //getSeats(); 
        break; 
    
+0

Vielen Dank dafür. Aber jetzt habe ich die getSeats() -Methode wiederholt. Es wird zu diesem Teil nicht kommen, den ich hinzugefügt habe. 'int mynum; Mynum = getMovieTitle(); int mynum2; mynum2 = getSeats(); int mov1 = 200; int mov2 = 300; int mov3 = 180; int mov4 = 100; Int Kosten; int Geld; int ändern; Zeichen c; System.out.print ("Empfang drucken? (J/n)"); c = scan.next(). CharAt (0); Schalter (c) { Pause; } ' –

+0

Können Sie Ihre Frage aktualisieren, um anzuzeigen, wo genau Sie das hinzugefügt haben? – Ray

+0

Ich habe nach dem Aufruf der Methode getName() eine switch-Anweisung hinzugefügt. Aber es bleibt bei der getSeats() stecken. * habe meine Frage aktualisiert –

Verwandte Themen