2014-02-24 58 views
0

我希望能夠一遍又一遍循環我的程序,具體取決於用戶輸入。能否請你看看下面我的代碼,幫助我瞭解如何可以做到這一點...我如何循環整個程序?

import java.util.*; 

public class Lab4 { 
    public static void main(String[] args){ 
     System.out.println("Body Fat Calculator"); 

     double A1,A2,A3,A4,A5,B; //female 
     double a1,a2,b; //male 
     double bodyWeight,wristMeasurement,waistMeasurement,hipMeasurement,forearmMeasurement; //both 
     double bodyFat,bodyFatpercent; //both 

     Scanner body = new Scanner (System.in); 

     System.out.println ("Enter Gender (m/f): "); 
     char gender = body.nextLine().charAt(0); 

     while ((gender != 'm') && (gender != 'f')) { 
      System.out.println ("Unknown gender, Enter gender again (m/f); "); 
      gender = body.nextLine().charAt(0); 
     } 

     do { 
      if (gender == 'm') { 
       System.out.println ("Enter Your Body Weight: "); 
       bodyWeight = body.nextInt(); 

       System.out.println ("Enter Your Waist Measurement: "); 
       waistMeasurement = body.nextDouble(); 

       a1 = (bodyWeight * 1.082) + 94.42; //male formula 
       a2 = waistMeasurement * 4.15; 
       b = a1 - a2; 

       bodyFat = bodyWeight - b; 
       bodyFatpercent = bodyFat * 100/bodyWeight; 

       System.out.printf ("%s %.2f%%%n", "Your Bodyfat Percentage is: ", bodyFatpercent); 
      } 

      else { 

       System.out.println ("Enter Your Body Weight: "); 
       bodyWeight = body.nextInt(); 

       System.out.println ("Enter Your Wrist Measurement: "); 
       wristMeasurement = body.nextDouble(); 

       System.out.println ("Enter Your Waist Measurement: "); 
       waistMeasurement = body.nextDouble(); 

       System.out.println ("Enter Your Hip Measurement: "); 
       hipMeasurement = body.nextDouble(); 

       System.out.println ("Forearm Your Measurement: "); 
       forearmMeasurement = body.nextDouble(); 

       A1 = (bodyWeight * 0.732) + 8.987; // female formula 
       A2 = wristMeasurement/3.14; //at fullest point 
       A3 = waistMeasurement * 0.157; //at navel 
       A4 = hipMeasurement * 0.249; //at fullest point 
       A5 = forearmMeasurement * 0.434; //at fullest point 
       B = A1 + A2 - A3 - A4 + A5; 

       bodyFat = bodyWeight - B; 
       bodyFatpercent = bodyFat * 100/bodyWeight; 
       System.out.printf ("%s %.2f%%%n", "Your Bodyfat Percentage is: ", bodyFatpercent); 
      } 
     } 
     while (true){ 
      System.out.println ("Would You Like to Use the Calculator Again (y/n)? "); 
      char answer = body.nextLine(); 
      // should loop here to run the program again 
     }  
    } 
+0

你有沒有嘗試過使用循環結構(比如'for'或'while')? –

回答

0

使用whilefor循環與你想循環的全部代碼。例如:

while(IsConditionTrue()){ 
    System.out.println ("Enter Gender (m/f): "); 
    char gender = body.nextLine().charAt(0); 
    // more code 
    // code to update the variable using which the condition is checked 
} 

其中

IsConditionTrue() returns a boolean value depending on the termination condition of your loop. 

不要忘記更新使用該條件的循環體檢查變量。

3

它可以通過移動出你的代碼到一個單獨的方法,然後調用該方法時一遍又一遍比較容易做到......

public void runMyCode(){ 
    // Put all your code in here 
    } 

public static void main(String[] args){ 
    boolean runAgain = true; // start off being true, so it will enter the loop for the first time 

    while(runAgain){ 
    runMyCode(); // runs your code 

    // when your code has been run once, it will come back here and ask this question 
    System.out.println ("Would You Like to Use the Calculator Again (y/n)? "); 
    char answer = body.nextLine(); 

    // we change the value of the boolean so that the while loop will repeat again only if the user enters 'y' 
    if (answer == 'y'){ 
     runAgain = true; 
     } 
    else { 
     runAgain = false; 
     } 
    } 
    } 

main()方法只是控制你的程序的重複。所有其他問題和處理髮生在runMyCode()方法中。

+0

你幫我學了很多關於Java的知識。感謝堆兄弟。 – jazzboy