2014-10-15 2 views
1

У меня есть программа конверсии, которая не будет сотрудничать со мной.Java menu looping

Он преобразует метров:

  1. км,
  2. дюймам,
  3. ног, или это
  4. Выход из программы.

Моя проблема заключается в том, что она должна продолжаться и позволяет вам вводить выбор 1, получить ответ и продолжать вводить выбор до тех пор, пока вы не нажмете 4, чтобы завершить программу.

До сих пор это заканчивается после расчета первого выбора или после того, как говорилось, что расстояние в метрах не может быть отрицательным числом независимо от того, что.

Это первый раз, когда я попросил форум для справки, и я ОЧЕНЬ новичок в java, поэтому, пожалуйста, держите это просто для меня.

import java.util.Scanner; 

public class ConversionProgram 
{ 

public static void showKilometers(double meters) //Converts Meters to Kilometers 
    { 
     double kilometers = meters * 0.001; 
     System.out.println(meters + " meters is " + kilometers + " kilometers."); 
    } 

    public static void showInches(double meters) //Converts Meters to Inches 
    { 
     double inches = meters * 39.37; 
     System.out.println(meters + " meters is " + inches + " inches."); 
    } 

    public static void showFeet(double meters) //Converts Meters to Feet 
    { 
     double feet = meters * 3.281; 
     System.out.println(meters + " meters is " + feet + " feet."); 
    } 


    public static void quitProgram() { 
    System.out.println("Bye!"); 
    } 
    public static void showMenu() { 
    System.out.println(" 1. Convert to Kilometers "); 
    System.out.println(" 2. Convert to Inches "); 
    System.out.println(" 3. Convert to Feet "); 
    System.out.println(" 4. Quit the program "); 
    System.out.println(" "); 
    } 


    public static void main(String[] args) { 

    double meters; 
    int choice; 

    Scanner keyboard = new Scanner(System.in); 

    System.out.println("Enter a Distance in Meters: "); 
    meters = keyboard.nextDouble(); 

    if (meters < 1) { 
     System.out.println("Meter can not be negative."); 
    } else showMenu(); 
    choice = keyboard.nextInt(); 
    switch (choice) { 
     case 1: 
     showKilometers(meters); 
     break; 

     case 2: 
     showInches(meters); 
     break; 

     case 3: 
     showFeet(meters); 
     break; 

     case 4: 
     quitProgram(); 
     break; 
    } 
    } 
} 
+0

Вам нужен какой-то цикл, вероятно, делать-то время цикла, проверить [В то время и делать-то время заявления] (HTTP://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html) для получения более подробной информации – MadProgrammer

ответ

1

Вы должны использовать цикл и продолжить запрос нового ввода, пока пользователь не решит выйти из программы. Вы можете начать этот цикл на ранних этапах выполнения вашей программы непосредственно перед запросом ввода от пользователя. Естественно, должно быть условие, в котором ваш цикл прерывается. Учитывая код, который вы предоставили, я думаю, что имеет смысл использовать логический флаг прямо под вашим выбором выхода. Примером может быть, как показано ниже:

import java.util.Scanner; 


public class ConversionProgram 


{ 
    public static void showKilometers(double meters) //Converts Meters to Kilometers 
    { 
     double kilometers = meters * 0.001; 
     System.out.println(meters + " meters is " + kilometers + " kilometers."); 
    } 

    public static void showInches(double meters) //Converts Meters to Inches 
    { 
     double inches = meters * 39.37; 
     System.out.println(meters + " meters is " + inches + " inches."); 
    } 

    public static void showFeet(double meters) //Converts Meters to Feet 
    { 
     double feet = meters * 3.281; 
     System.out.println(meters + " meters is " + feet + " feet."); 
    } 


    public static void quitProgram() { 
     System.out.println("Bye!"); 
    } 

    public static void showMenu() { 
     System.out.println(" 1. Convert to Kilometers "); 
     System.out.println(" 2. Convert to Inches "); 
     System.out.println(" 3. Convert to Feet "); 
     System.out.println(" 4. Quit the program "); 
     System.out.println(" "); 
    } 


    public static void main(String[] args) { 

     double meters; 
     int choice; 

     Scanner keyboard = new Scanner(System.in); 

     // Loop breaker 
     boolean quitFlag = false; 

     // Whole program wrapped around a loop 
     while (!quitFlag) { 
      System.out.println("Enter a Distance in Meters: "); 
      meters = keyboard.nextDouble(); 

      if (meters < 1) { 
       System.out.println("Meter can not be negative."); 
      } else showMenu(); 
      choice = keyboard.nextInt(); 
      switch (choice) { 
       case 1: 
        showKilometers(meters); 
        break; 

       case 2: 
        showInches(meters); 
        break; 

       case 3: 
        showFeet(meters); 
        break; 

       case 4: 
        quitFlag = true; 
        quitProgram(); 
        break; 
      } 
     } 
    } 
} 
+0

этот ответ был помечен как ответ низкого качества. пожалуйста, предоставьте некоторую информацию или объяснение –

0

Вы должны поместить свой выбор в во время цикла, который будет работать на неопределенный срок и в quitProgram() вы должны написать System.exit (0) для выхода из программы.

+2

Я думаю, что его 'System.exit()' not 'System.out.exit()' –

1

Что вам нужно сделать, просто держать свою логику преобразования в цикле до ввода 4. Еще одно предложение, когда вы вводите значение меньше 1, то его приостановить программу либо выйти из или вызовите метод для ввода ввода снова и повторите все шаги. Сделать метод that.For теперь я просто скопировал свой код, если блок

import java.util.Scanner; 


public class Test {  


public static void showKilometers(double meters) // Converts Meters to // Kilometers           
{ 

    double kilometers = meters * 0.001; 
    System.out.println(meters + " meters is " + kilometers + " kilometers.");   
} 

public static void showInches(double meters) // Converts Meters to Inches 
{ 
    double inches = meters * 39.37; 
    System.out.println(meters + " meters is " + inches + " inches."); 
} 

public static void showFeet(double meters) // Converts Meters to Feet 
{ 
    double feet = meters * 3.281; 
    System.out.println(meters + " meters is " + feet + " feet."); 
} 

public static void quitProgram() { 
    System.out.println("Bye!"); 
} 

public static void showMenu() { 
    System.out.println(" 1. Convert to Kilometers "); 
    System.out.println(" 2. Convert to Inches "); 
    System.out.println(" 3. Convert to Feet "); 
    System.out.println(" 4. Quit the program "); 
    System.out.println(" "); 
} 

public static void main(String[] args) { 
    int choice; 
    double meters; 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Enter a Distance in Meters: "); 
    meters = keyboard.nextDouble(); 
    do { 
     if (meters < 1) { 
      System.out 
        .println("Meter can not be negative and keep it greater then 0"); 
      System.out.println("Enter a Distance in Meters: "); 
      meters = keyboard.nextDouble(); 
      showMenu(); 
      choice = keyboard.nextInt(); 
      switch (choice) { 
      case 1: 
       showKilometers(meters); 
       break; 
      case 2: 
       showInches(meters); 
       break; 
      case 3: 
       showFeet(meters); 
       break; 

      case 4: 
       quitProgram(); 
       break; 
      } 
     } else 
      showMenu(); 
     choice = keyboard.nextInt(); 
     switch (choice) { 
     case 1: 
      showKilometers(meters); 
      break; 
     case 2: 
      showInches(meters); 
      break; 
     case 3: 
      showFeet(meters); 
      break; 

     case 4: 
      quitProgram(); 
      break; 
     } 
    } while (choice != 4); 
}} 
+0

спасибо, я сохранил все ответы для дальнейшего использования. Мне еще многое предстоит узнать. Может быть, я должен попробовать несколько видео на YouTube. – Nirarria