2015-10-31 3 views
-1

Я только что просил эту программу, она должна тренироваться для экзаменационного экзамена в этот понедельник.Looping program back to '' menu ''

Вещи я хотел бы добавить, это: после того, как пользователь сделал с одним из вариантов обмена 1/2/3 я хотел бы дать возможность, чтобы позволить пользователю вернуться к началу welcome to the money exchange! etc.....

Я пробовал некоторый цикл for и while, но я не мог заставить его работать. Было бы здорово, если после процесса обмена денег пользователь получит возможность вернуться к началу, набрав y или n, возможно ли это?

/* This program is written as a excercise to prep myself for exams. * In this program the user can: * 1. Select a currency (other than euro's) * 2. Input the amount of money * 3. transfer the amount of currency to euro's */

public static void main(String[] args) { 

    Scanner input = new Scanner(System.in); 




    System.out.println(" Welcome to the money exchange! \n Please pick one of the currencies by useing 1/2/3 \n \n 1 = US dollar \n 2 = GB pounds \n 3 = Yen \n "); 
    System.out.print("Input : "); 

    DecimalFormat df = new DecimalFormat() ; 
    df.setMaximumFractionDigits(2); 

    int choice = input.nextInt() ; 
    double transfee = 2.41 ; 
    double USrate = 0.9083 ; 
    double GBrate = 1.4015 ; 
    double YENrate = 0.0075 ; 

    if (choice > 3 || choice < 1) { 
     System.out.println("Invalid input!...... Please try agian\n"); 
    } else { 
     if(choice == 1) { 
      System.out.println("You have choosen for US dollar \n"); 
      System.out.print("Please enter amount US dollar: "); 
      double USamount = input.nextDouble() ; 
      double deuros = USamount * USrate ; 
      double ddisburse = deuros - transfee ; 

      System.out.print("\nInput amount US dollar:. " + USamount + "\n"); 
      System.out.print("Worth in euro's:........ " + df.format(deuros) + "\n");  
      System.out.print("Transfer cost:.......... " + transfee + "\n"); 
      System.out.print("Amount to disburse:..... " + df.format(ddisburse) + "\n"); 


     }else { 
      if(choice == 2){ 
       System.out.println("You have choosen for GB pounds"); 
       System.out.print("Please enter amount GB ponds: "); 
       double GBamount = input.nextDouble(); 
       double geuros = GBamount * GBrate ; 
       double gdisburse = geuros - transfee; 

       System.out.print("\nInput amount GB pound:. " + GBamount + "\n"); 
       System.out.print("Worth in euro's........ " + df.format(geuros) + "\n"); 
       System.out.print("Transfer cost:......... " + transfee + "\n"); 
       System.out.print("Amount to disburse:.... " + df.format(gdisburse) + "\n"); 


      }else { 
       if(choice == 3){ 
        System.out.println("You have choosen for Yen"); 
        System.out.print("Please enter amount Yen: "); 
        double YENamount = input.nextDouble(); 
        double yeuros = YENamount * YENrate ; 
        double ydisburse = yeuros - transfee ; 

        System.out.print("\nInput amount Yen:... " + YENamount + "\n"); 
        System.out.print("Worth in euro's..... " + df.format(yeuros) + "\n"); 
        System.out.print("Transfer cost:...... " + transfee + "\n"); 
        System.out.print("Amount to disburse:. " + df.format(ydisburse) + "\n"); 



      } 
      } 
     } 
    } 






    } 


} 
+1

'...} еще {если (выбор == 2) {' кажется немного странным. Почему не просто '...} else if (choice == 2) {'? Или используйте оператор 'switch'. – pzaenger

+0

В основном я хотел бы дать пользователю возможность вернуться к началу, так что опция выбора валюты возвращается и пользователь может запустить программу agian –

+0

делает '...} else if (choice == 2) {'делать то же самое, что' ...} else {if (choice == 2) {'? Спасибо за совет! все еще изучая основы java :) –

ответ

1

Вы можете обернуть вашу программу с время цикла, который проверяет, если пользователь ввел 'у' в конце, как это:

import java.text.DecimalFormat; 
import java.util.Scanner; 

class YourClassName 
{ 
    public static void main(String[] args) 
    { 
     boolean askAgain = true; 

     while (askAgain) 
     { 
      Scanner input = new Scanner(System.in); 

      System.out.println(
        " Welcome to the money exchange! \n Please pick one of the currencies by useing 1/2/3 \n \n 1 = US dollar \n 2 = GB pounds \n 3 = Yen \n "); 
      System.out.print("Input : "); 

      DecimalFormat df = new DecimalFormat(); 
      df.setMaximumFractionDigits(2); 

      int choice = input.nextInt(); 
      double transfee = 2.41; 
      double USrate = 0.9083; 
      double GBrate = 1.4015; 
      double YENrate = 0.0075; 

      if (choice > 3 || choice < 1) 
      { 
       System.out.println("Invalid input!...... Please try agian\n"); 
      } else 
      { 
       if (choice == 1) 
       { 
        System.out.println("You have choosen for US dollar \n"); 
        System.out.print("Please enter amount US dollar: "); 
        double USamount = input.nextDouble(); 
        double deuros = USamount * USrate; 
        double ddisburse = deuros - transfee; 

        System.out.print(
          "\nInput amount US dollar:. " + USamount + "\n"); 
        System.out.print("Worth in euro's:........ " 
          + df.format(deuros) + "\n"); 
        System.out.print(
          "Transfer cost:.......... " + transfee + "\n"); 
        System.out.print("Amount to disburse:..... " 
          + df.format(ddisburse) + "\n"); 

       } else 
       { 
        if (choice == 2) 
        { 
         System.out.println("You have choosen for GB pounds"); 
         System.out.print("Please enter amount GB ponds: "); 
         double GBamount = input.nextDouble(); 
         double geuros = GBamount * GBrate; 
         double gdisburse = geuros - transfee; 

         System.out.print(
           "\nInput amount GB pound:. " + GBamount + "\n"); 
         System.out.print("Worth in euro's........ " 
           + df.format(geuros) + "\n"); 
         System.out.print(
           "Transfer cost:......... " + transfee + "\n"); 
         System.out.print("Amount to disburse:.... " 
           + df.format(gdisburse) + "\n"); 

        } else 
        { 
         if (choice == 3) 
         { 
          System.out.println("You have choosen for Yen"); 
          System.out.print("Please enter amount Yen: "); 
          double YENamount = input.nextDouble(); 
          double yeuros = YENamount * YENrate; 
          double ydisburse = yeuros - transfee; 

          System.out.print("\nInput amount Yen:... " 
            + YENamount + "\n"); 
          System.out.print("Worth in euro's..... " 
            + df.format(yeuros) + "\n"); 
          System.out.print(
            "Transfer cost:...... " + transfee + "\n"); 
          System.out.print("Amount to disburse:. " 
            + df.format(ydisburse) + "\n"); 

         } 
        } 
       } 
      } 

      System.out.println("Do you want to do another calculation? (y/n)"); 
      String againAnswer = input.next(); 
      askAgain = againAnswer.equalsIgnoreCase("y"); 
     } 
    } 
} 

Установка bool переменная ean до true сначала позволяет ввести цикл. Пользователь будет задан до тех пор, пока он напечатает y в конце. Любой другой символ будет выйти из цикла:

String againAnswer = input.next(); 
askAgain = againAnswer.equalsIgnoreCase("y"); 

Вы можете также проверить для явного n, но это до вас.

+0

Спасибо за ответ! ,, Я также посмотрел инструкцию while, но я не мог понять, как применить цикл. Это отличный пример! У меня есть один вопрос, хотя, что делает логическое значение для цикла? –

+0

Пока значение boolean соответствует «true», цикл будет работать (снова). Вот почему цикл с 'while (true)' работает вечно (или пока вы не закончите его с 'return' или' break'). В конце цикла while логическое значение переназначается, поэтому оно будет истинным только в том случае, если вход является 'y'or'Y'. – Zhedar

+0

Большое спасибо! я собираюсь применить это к программе :) –

1

Поместите код внутри цикла while (while(true)). В конце каждого if блок добавьте один вложенный if.

System.out.print(Do you want to continue?"); 
if(in.next().equals("Y")) { 
continue; 
} 

И вы должны добавить один дополнительный меню (4-е) для выхода:

if(choice == 4){ 
break; 
} 
+0

Итак, я должен добавить первый блок кода из вашего комментария в каждый оператор 'if() {}'? А второй блок в конце кода, чтобы дать пользователю возможность остановить программу от цикла? –

+0

Правильно. Одна коррекция. Поскольку вы уже объявили одну переменную объекта Scanner, вы можете ее использовать. Я удалил эту декларацию – Rehman