2014-11-08 123 views
1

嗨,我現在是新來的java。我有一個工作代碼,但如果用戶輸入錯誤的時間,我希望它回到開頭。我似乎無法解決,有沒有一種簡單的方法可以做到這一點。回到程序的開始

package Time_calculation; 

    import java.util.*; 
    import java.text.SimpleDateFormat; 
    import java.util.Date; 

    public class Time_calculation { 

    public static void main(String[] args) { 

    SimpleDateFormat timeFormat = new SimpleDateFormat ("HH:mm:ss"); 

    Date T1 = null; 
    Date T2 = null; 


    Scanner RFK = new Scanner(System.in); 

    boolean programrunning = true; 
    while (programrunning == true){ 


    System.out.println("Enter start time HH:MM: (If you wish to exit please type 'Exit')"); 
    String srtTime = RFK.nextLine(); 
    if (srtTime .matches ("Exit")){ 
      System.out.println("Exiting..."); 
      System.exit(0); 
    }else{ 
    try{ 
     T1 = timeFormat.parse(srtTime); 
     }catch (Exception e){ 
      System.err.println("Error");} 


    System.out.println("Enter end time HH:MM:SS (If you wish to exit please type 'Exit')"); 
    String endtime = RFK.nextLine(); 
    if (endtime .matches ("Exit")){ 
      System.out.println("Exiting..."); 
      System.exit(0); 
    }else{ 
    try{ 
     T2 =timeFormat.parse(endtime); 
     }catch (Exception e){ 
      System.err.println("Error");} 

    long diff = T2.getTime() - T1.getTime(); 
    long diffsec = diff/1000; 
    System.out.println("Your time in seconds is: " + diffsec + " seconds"); 

    double ms = 1609.344/diffsec; 
    double mph = ms * 2.23693629; 
    System.out.println("Speed in M/S: " + ms); 
    System.out.println("Speed in MPH is: " + mph); 

    if(mph > 6){ 
      System.out.println("Running faster than average speed!");} 
    else{ 
      System.out.println("You are running lower than average speed!");} 

    System.out.println(); 
      } 
     } 
    } 
} 

}

有沒有人有任何想法如何,這將真正幫助。

+1

Java和JavaScript之間有區別! – 2014-11-08 14:14:10

+0

如果您事先不知道循環必須發生多少次,請在任何程序中使用「while」或「do-while」循環「返回」。另外,不要使用'while(programrunning == true){'使用更簡單的'while while(programrunning){' – 2014-11-08 14:15:19

回答

0
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Scanner; 

public class TimeCalculation { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner sc = new Scanner(System.in); 

     while (true) { 
      Date start = TimeCalculation 
        .readInput(
          "Enter start time HH:MM: (If you wish to exit please type 'Exit')", 
          sc); 

      Date end = TimeCalculation 
        .readInput(
          "Enter End time HH:MM: (If you wish to exit please type 'Exit')", 
          sc); 
      // Do whatever you want with start and end here 
     } 
    } 

    /* 
    * Take care of reading input if valid input found return it else propmt again for valid input or exit if user wants 
    * */ 

    public static Date readInput(String msg, Scanner sc) { 
     Date output = null; 
     boolean isValid = false; 
     SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); 
     while (!isValid) { 

      System.out.println(msg); 
      String time = sc.nextLine(); 

      if (time.matches("Exit")) { 
       System.out.println("Exiting..."); 
       System.exit(0); 
      } else { 
       try { 
        output = timeFormat.parse(time); 
        isValid = true; 
       } catch (Exception e) { 
        System.out.println("Invalid Input"); 
       } 
      } 
     } 
     return output; 
    } 

}