2012-12-15 12 views
0

프로그램은 기본적으로 사용자에게 BMR 및 성별을 입력하도록 요청합니다. 그런 다음 활동 레벨을 선택하도록 요청합니다 (잘못된 질문을 선택하면 "올바른 선택 사항을 입력하십시오"). 암컷과 수컷은 다른 활동 인자를 가지고 있습니다. "Variable ActivityFactor를 초기화해야합니다."라는 오류가 발생했습니다. 코드를 수정하려면 어떻게해야합니까? 감사합니다변수 초기화

 iBMR = new Scanner(System.in); 
     Scanner iGender = new Scanner(System.in); 
     Scanner iActivity = new Scanner(System.in); 
     String AcFactor; 
     double ActivityFactor ; 
     double TDEE; 
     //User Input 
     System.out.println("Please enter your name: "); 
     String inName = iName.next(); 
     System.out.println("Please enter your BMR: "); 
     String inBMR = iBMR.next(); 
     double nBMR = Double.parseDouble(inBMR); 
     System.out.println("Please enter your Gender"); 
     String inGender = iGender.next(); 

     System.out.println("Select Your Activity Level"); 
     System.out.println("[A] Resting (Sleeping,Reclining)"); 
     System.out.println("[B] Sedentary (Minimal Movement)"); 
     System.out.println("[C] Light (Sitting, Standing)"); 
     System.out.println("[D] Moderate (Light Manual Labor, Dancing, Riding Bike)"); 
     System.out.println("[E] Very Active (Team Sports, Hard Manual Labor)"); 
     System.out.println("[F] Extremely Active (Full-time Athlete, Heavy Manual Labor)"); 
     System.out.println("Enter the letter corrresponding to your activity level: "); 
     String inActivity = iActivity.next(); 

     //CalculationFemale 
     if(inActivity.equalsIgnoreCase("A")&& inGender.equalsIgnoreCase("F")) 
     { 
      ActivityFactor = 1.0; 
     } 
     else if(inActivity.equalsIgnoreCase("B")&& inGender.equalsIgnoreCase("F")) 
     { 
      ActivityFactor = 1.3; 
     } 
     else if(inActivity.equalsIgnoreCase("C")&& inGender.equalsIgnoreCase("F")) 
     { 
      ActivityFactor = 1.5; 
     } 
     else if(inActivity.equalsIgnoreCase("D")) && (inGender.equalsIgnoreCase("F")) 
     { 
      ActivityFactor = 1.6; 
     } 
     else if(inActivity.equalsIgnoreCase("E")&& inGender.equalsIgnoreCase("F")) 
     { 
      ActivityFactor = 1.9; 
     } 
     else if(inActivity.equalsIgnoreCase("F")&& inGender.equalsIgnoreCase("F")) 
     { 
      ActivityFactor = 2.2; 
     } 
     else 
     { 

      System.out.println("Please enter a valid choice!"); 
     } 

     //CalculationMale 
     if(inActivity.equalsIgnoreCase("A")&& inGender.equalsIgnoreCase("M")) 
     { 
      ActivityFactor = 1.0; 
     } 
     else if(inActivity.equalsIgnoreCase("B")&& inGender.equalsIgnoreCase("M")) 
     { 
      ActivityFactor = 1.3; 
     } 
     else if(inActivity.equalsIgnoreCase("C")&& inGender.equalsIgnoreCase("M")) 
     { 
      ActivityFactor = 1.6; 
     } 
     else if(inActivity.equalsIgnoreCase("D")&& inGender.equalsIgnoreCase("M")) 
     { 
      ActivityFactor = 1.7; 
     } 
     else if(inActivity.equalsIgnoreCase("E")&& inGender.equalsIgnoreCase("M")) 
     { 
      ActivityFactor = 2.1; 
     } 
     else if(inActivity.equalsIgnoreCase("F")&& inGender.equalsIgnoreCase("M")) 
     { 
      ActivityFactor = 2.4; 
     } 
     else 
     { 

      System.out.println("Please enter a valid choice!"); 
     } 

     //TDEE 
     double TD(ActivityFactor * BMR); 

** 모든 답변을 주셔서 감사합니다. 나는 if/if else 조건이 모두 통과하지 않으면 "else"가 ActivityFactor에 대한 값을 가지지 않을 것임을 알고 있습니다. 모든 답장 덕분에, 나는 이것을 추구하는 나의 방법이 효과가 없다는 것을 깨닫습니다. 누군가가 나에게 사용자 이름/성/bmr을 묻는 그런 프로그램을 코딩 할 수있는 방법에 대한 개요를 제공 한 다음 사용자가 남성인지 여성인지 여부 및 활동 수준에 따라 활동 수준을 선택하도록 요청할 수 있습니까? ? 활동 수준의 감사

답변

0
당신은 그냥 초기화있어 확인하기 위해 몇 가지 더미 값으로 ActivityFactor을 설정해야

: 도움이

double ActivityFactor = -1; 

희망을!

else 
{ 

    System.out.println("Please enter a valid choice!"); 
} 

그래서 두 가지 옵션이 있습니다 :이 변수가 초기화되지 체류 할 수 있도록 코드 경로를 가지고 있기 때문에

double TD(ActivityFactor * BMR); 

이것은 :

0

자바 컴파일러는 잠재적으로 초기화되지 않은 변수를 사용하고 있는지 확인 : 선언 할 때이 변수를 초기화하십시오.

double ActivityFactor = 0.0; 

또는 모든 코드 경로를 만들어이 변수를 사용하기 전에 반드시 초기화해야합니다.

else 
{ 
    ActivityFactor = 0.0; 
    System.out.println("Please enter a valid choice!"); 
} 

내가 당신에게 갈 수있는 첫 번째 옵션을 제안 : 귀하의 경우에는 당신이 다음 else 블록에 초기화를 추가 할 필요가 있다는 것을 의미합니다.

0

if-else 문 앞에 ActivityFactor 값을 주어야합니다. 만약

double TD(ActivityFactor * BMR); 

문에서 당신 '의이 작동하지 않으면, 자바는 알 수 없다 ActivityFactor의.

선언은 다음과 같이 initilaze :

double ActivityFactor = 0.0; 
0

ActivityFactor 사용하기 전에 초기화해야합니다. 귀하의 코드가 그것을 보장하지는 않습니다. 가장 간단한 방법은 선언에 기본값을 추가하는 것입니다.

double ActivityFactor = 10.0;