2014-05-04 1 views
1

Я пишу программу, где у пользователя есть выбор из 7 фильмов для покупки. Пользователь может выбрать как можно больше фильмов до 7, а затем добавить цены на фильмы и распечатать общую цену. Я должен использовать массивы в своей программе. Моя проблема в том, что пользователь уже выбрал свой первый фильм, которому им предоставлен выбор, если они хотят купить еще один фильм. Я смущен тем, как я должен кодировать свою программу, предоставляя пользователю другой выбор, чтобы выбрать более одного фильма. Мне нужна помощь в том, как я должен исправить свою проблему, потому что, когда я запускаю свою программу, я не допущу, чтобы у меня был выбор, чтобы выбрать другой фильм. Вот мой код:Как я могу заставить пользователя сделать другой выбор при выборе фильма?

import java.util.Scanner; 
public class MovieHits { 

public static void main(String[] args) 
{ 
    //Declare Variables 
    Scanner keyboard = new Scanner(System.in); 
    int userChoice = 0; 
    String choice; 
    int priceTotal = 0; 
    int [] number = {1, 2, 3, 4, 5, 6, 7}; 

    String [] Movie = new String [7]; 
    int [] movieCost ={ 5, 4, 3, 6, 4, 4, 3}; 

    Movie [0] = "Iron Man"; 
    Movie [1] = "Transformers"; 
    Movie [2] = "Godzilla"; 
    Movie [3] = "Fast and Furious"; 
    Movie [4] = "Captain America"; 
    Movie [5] = "X Men"; 
    Movie [6] = "Rio"; 

    //Welcome the user 
    System.out.println("Hello, Welcome to TC Movies OnDemand."); 

    //Display the listed movies so the user can know with movie they want to watch 
    System.out.println("\nChoose which movie you want to watch: "); 
    for (int index = 0; index < 7; index = index + 1) 
    { 
     System.out.println(number[index]+ ": " + Movie[index]); 
     System.out.println("\t" + "Price: $" + movieCost[index]); 
    } 


    //Switch Statement to give user a menu to choose a movie 
    userChoice = keyboard.nextInt(); 

    switch (userChoice) 
    { 
    case 1: 
     System.out.println("The movie you have chosen is " + Movie[0] + "\nPrice is: " + "$" + movieCost[0]); 
     break; 

    case 2: 
     System.out.println("The movie you have chosen is " + Movie[1] + "\nPrice is: " + "$" + movieCost[1]); 
     break; 

    case 3: 
     System.out.println("The movie you have chosen is " + Movie[2] + "\nPrice is: " + "$" + movieCost[2]); 
     break; 

    case 4: 
     System.out.println("The movie you have chosen is " + Movie[3] + "\nPrice is: " + "$" + movieCost[3]); 
     break; 

    case 5: 
     System.out.println("The movie you have chosen is " + Movie[4] + "\nPrice is: " + "$" + movieCost[4]); 
     break; 

    case 6: 
     System.out.println("The movie you have chosen is " + Movie[5] + "\nPrice is: " + "$" + movieCost[5]); 
     break; 

    case 7: 
     System.out.println("The movie you have chosen is " + Movie[6] + "\nPrice is: " + "$" + movieCost[6]); 
     break; 
    default: 
     System.out.println("I'm Sorry you did not chose a movie."); 
     break; 
    } 


    //Tell the user if they want to get another movie 
    System.out.println("Do you want to add another movie. Enter Yes or No"); 
    choice = keyboard.next(); 

    do 
    { 
     priceTotal = movieCost[userChoice]; 

    } 
    while (choice.equalsIgnoreCase("Yes")); 
    { 

    } 
    //Tell the user the total price 




} 

}

+2

'делают-while' петли находится в неправильном месте – arunmoezhi

+0

пут' '{сделать, прежде чем' userChoice = keyboard.nextInt(); '. – Braj

ответ

0
do { 
      //Switch Statement to give user a menu to choose a movie 
      System.out.println("Choose your movie number:"); 
      userChoice = keyboard.nextInt(); 

      switch (userChoice) { 
       case 1: 
        System.out.println("The movie you have chosen is " + Movie[0] + "\nPrice is: " + "$" + movieCost[0]); 
        break; 

       case 2: 
        System.out.println("The movie you have chosen is " + Movie[1] + "\nPrice is: " + "$" + movieCost[1]); 
        break; 

       case 3: 
        System.out.println("The movie you have chosen is " + Movie[2] + "\nPrice is: " + "$" + movieCost[2]); 
        break; 

       case 4: 
        System.out.println("The movie you have chosen is " + Movie[3] + "\nPrice is: " + "$" + movieCost[3]); 
        break; 

       case 5: 
        System.out.println("The movie you have chosen is " + Movie[4] + "\nPrice is: " + "$" + movieCost[4]); 
        break; 

       case 6: 
        System.out.println("The movie you have chosen is " + Movie[5] + "\nPrice is: " + "$" + movieCost[5]); 
        break; 

       case 7: 
        System.out.println("The movie you have chosen is " + Movie[6] + "\nPrice is: " + "$" + movieCost[6]); 
        break; 
       default: 
        System.out.println("I'm Sorry you did not chose a movie."); 
        break; 
      } 

      //Tell the user if they want to get another movie 
      System.out.println("Do you want to add another movie. Enter Yes or No"); 
      choice = keyboard.next(); 

      priceTotal = movieCost[userChoice]; 

     } while (choice.equalsIgnoreCase("Yes")); 

    } 
+1

Спасибо, что я попытаюсь исправить мою программу и посмотреть, что я получаю за совет. – TollesonC

+0

Теперь у меня есть еще одна проблема, когда я вхожу в да для выбора, чтобы получить еще один фильм, он перепечатывает тот же тест, который я получил для своего первого выбора. – TollesonC

+0

вы могли бы более ясно? –

0

Вы должны использовать делать-то время как цикл следующим образом:

  • В сделать блок, поместите код, который вы хотели бы произойти
    • Это должно быть все между (и в том числе) «Выберите фильм» и получить выбор пользователя для повторения.
    • Это означает, что весь этот код гарантированно будет выполняться один раз и будет происходить снова, если при выполнении условия.
  • Блок кода для условия while находится над ним и, таким образом, заканчивается точкой с запятой.
3

Я бы очистить свой код вот так:

String choice = "Yes"; //Set to yes by default. 
//Welcome the user 
System.out.println("Hello, Welcome to TC Movies OnDemand."); 

while(choice.equalsIgnoreCase("Yes")){ 
//Display the listed movies so the user can know with movie they want to watch 
System.out.println("\nChoose which movie you want to watch: "); 
for (int index = 0; index < 7; index = index + 1){ 
    System.out.println(number[index]+ ": " + Movie[index]); 
    System.out.println("\t" + "Price: $" + movieCost[index]); 
} 

userChoice = keyboard.nextInt(); 

try{ 
    System.out.println("The movie you have chosen is " + Movie[userChoice] + "\nPrice is: " + "$" + movieCost[userChoice]); 
}catch(Exception e){ 
    System.out.println("Sorry, you did not choose a movie."); 
} 

//Tell the user if they want to get another movie 
System.out.println("Do you want to add another movie? Enter Yes or No."); 
choice = keyboard.next(); 

} 

Это refactors код означает, что вы не должны использовать длинный switch заявление для каждого типа фильма у вас есть.

Мы использовали userChoice как фактический индекс для поиска, а блок try{}catch{} означает, что мы по-прежнему можем «поймать» недопустимый ввод, если пользователь неправильно входит в фильм для просмотра.

Я изначально использовал do-while, как и вы, но эта структура никогда не работает для меня, поэтому я поменял ее на прямую линию while, с которой я больше знаком.

+0

вы уверены? некоторые пункты ошибочны относительно вашего подхода :) –

+0

@KickButtowski Как так? – Singular1ty

+0

когда я запускаю его, он просто спрашивает один раз, и программа завершается :) –

0
You used do-while loop in wrong place in wrong way.Change Your code to this : 

    do{ 
    try{ 
     userChoice = keyboard.nextInt(); 
    } catch(Execption e){ 
     System.out.Println("Error in input!"); 
    } 
switch (userChoice) 
{ 
case 1: 
    System.out.println("The movie you have chosen is " + Movie[0] + "\nPrice is: " + "$" + movieCost[0]); 
    break; 

case 2: 
    System.out.println("The movie you have chosen is " + Movie[1] + "\nPrice is: " + "$" + movieCost[1]); 
    break; 

case 3: 
    System.out.println("The movie you have chosen is " + Movie[2] + "\nPrice is: " + "$" + movieCost[2]); 
    break; 

case 4: 
    System.out.println("The movie you have chosen is " + Movie[3] + "\nPrice is: " + "$" + movieCost[3]); 
    break; 

case 5: 
    System.out.println("The movie you have chosen is " + Movie[4] + "\nPrice is: " + "$" + movieCost[4]); 
    break; 

case 6: 
    System.out.println("The movie you have chosen is " + Movie[5] + "\nPrice is: " + "$" + movieCost[5]); 
    break; 

case 7: 
    System.out.println("The movie you have chosen is " + Movie[6] + "\nPrice is: " + "$" + movieCost[6]); 
    break; 
default: 
    System.out.println("I'm Sorry you did not chose a movie."); 
    break; 
} 


    //Tell the user if they want to get another movie 

    try{ 
     System.out.println("Do you want to add another movie. Enter Yes or No"); 
     choice = keyboard.nextLine(); 
    } catch(Execption e){ 
     System.out.Println("Error in input!"); 
    } 
    priceTotal = movieCost[userChoice]; 

} while (choice.equalsIgnoreCase("Yes")); 
Смежные вопросы