2017-10-10 82 views
0

。在輸入年齡和體重後,我的程序會顯示一條錯誤消息。誰能幫我?例如:用戶爲switch語句輸入1以選擇輸入月份的年齡和以kg爲單位的重量。如果用戶在幾個月內輸入-5,則應立即顯示錯誤消息並結束程序。相反,我的程序所做的是在-5歲之後輸入年齡,它會提示用戶輸入體重。在輸入重量之後,它會給我提供錯誤信息並結束我的程序。任何幫助都感激不盡。。如果用戶輸入了無效的重量或年齡,程序應該立即顯示錯誤消息並結束程序,則我的程序在輸入完成後會顯示錯誤消息

import java.util.Scanner; 
import java.lang.Math; 
public class infant{ 

public static void main(String[] args) { 
Scanner sc = new Scanner(System.in); 
int number; 
double ageMonths = 0; 
double ageYears = 0; 
double weightPounds = 0; 
double weightKg = 0; 


System.out.println("Choice 1 input the age in months, then weight in kilograms");   // this tells the user what the numbers 1-4 does when chosen 
System.out.println("Choice 2 input the age in years, weight in kilograms"); 
System.out.println("Choice 3 input the age in months, weight in pounds"); 
System.out.println("Choice 4 input the age in years, weight in pounds"); 


number =sc.nextInt(); 

if(number<=4 && number>=1){             // if statement that makes the user enter a value from 1 to 4 for the switch statment. 
     System.out.println("valid number selection"); 
    }else{ System.out.println("need to choose a number between 1 and 4"); 
     return; 
    } 

switch(number){                 // switch statment that allows the user to choose how they want to enter the height and weight 
    case 1: System.out.println("age in months: "); ageMonths =sc.nextDouble(); 
      System.out.println("weight in kilograms: "); weightKg =sc.nextDouble(); 
      ageYears = ageMonths * 0.0833334;           // this switch statment also converts Kg to pounds and years to months in order for math equation in the if statement at then end of the program to work. 
      weightPounds = weightKg * 2.20462; 
      break; 
    case 2: System.out.println("age in years: "); ageYears =sc.nextDouble(); 
      System.out.println("weight in kilograms: "); weightKg =sc.nextDouble(); 
      ageMonths = ageYears * 12; 
      weightPounds = weightKg * 2.20462; 
      break; 
    case 3: System.out.println("age in months: "); ageMonths =sc.nextDouble(); 
      System.out.println("weight in pounds: "); weightPounds =sc.nextDouble(); 
      ageYears = ageMonths * 0.0833334; 
      weightKg = weightPounds * 0.453592; 
      break; 
    case 4: System.out.println("age in years: "); ageYears =sc.nextDouble(); 
      System.out.println("weight in pounds: "); weightPounds =sc.nextDouble(); 
      ageMonths = ageYears * 12; 
      weightKg = weightPounds * 0.453592; 
      break; 
    default: System.out.println("you entered in an invalid number"); 

}  

if(ageMonths<=24 && ageMonths>-0.1){          // if statement that makes sure the ages are in the correct range 
    System.out.println("valid age input"); 
    }else if(ageYears>-0.1 && ageYears<=2){ 
     System.out.println("valid age input"); 
    }else{ System.out.println("You entered a invaild age 0 to 24 months only"); 
     return; 
} 

    if(weightPounds>=4.40925 && weightPounds<=33.0693 || weightKg>=2 && weightKg<=15){  // if statement that makes sure the weight are in the correct range 
     System.out.println("valid weight input"); 
    }else{ System.out.println("You entered a invaild weight 2kg to 15kg only"); 
     return; 
    } 




    if(weightKg >= ageYears * ageMonths/3 + 2 && weightKg <= 5 * ageYears * ageMonths/12 + 5){ // if statement that does a math equation to determine if your infant is healthy or not 
     System.out.println(" your infant is healthy"); 
    }else{ System.out.println(" your infant is not healthy"); 
    } 

    } 
    } 

回答

0

檢查權和幾個月的代碼,你保持代碼的無論是在一些不同的功能,然後將開關盒內你已經進入了幾個月後,再打電話與月功能輸入,然後你可以爲重量做同樣的事情,這樣你就可以擁有一個你想要的結構。不要問你是否需要任何澄清。

function checkMonths(double ageMonths){ 
if(ageMonths<=24 && ageMonths>-0.1){          // if statement that makes sure the ages are in the correct range 
System.out.println("valid age input"); 
}else{ System.out.println("You entered a invaild age 0 to 24 months only"); 
    return; 
} 
} 
function checkYears(double ageYears){ 
if(ageYears>-0.1 && ageYears<=2){ 
    System.out.println("valid age input"); 
}else{ System.out.println("You entered a invaild age 0 to 24 months only"); 
    return; 
} 
} 


function checkWeights(double weightPounds){ 

if(weightPounds>=4.40925 && weightPounds<=33.0693 || weightKg>=2 && weightKg<=15){  // if statement that makes sure the weight are in the correct range 
    System.out.println("valid weight input"); 
}else{ System.out.println("You entered a invaild weight 2kg to 15kg only"); 
    return; 
} 

} 

請根據您的使用情況更改函數參數中的變量名稱。

+0

所以基本上你說的是我需要我的switch語句中的重量和年齡的if語句? –

+0

基本上就是這樣。但是你不需要複製所有情況下的檢查部分,因爲你可以形成一個函數。 –

+0

我試着用代碼函數checkWeights(雙重){ –

0

如果你真的只想用無效輸入結束你的程序,你總是可以使用System.exit(0)而不是「return」。這保證了程序結束。

例如:

if(number<=4 && number>=1){             // if statement that makes the user enter a value from 1 to 4 for the switch statment. 
    System.out.println("valid number selection"); 
}else{ System.out.println("need to choose a number between 1 and 4"); 
    System.exit(0); 
} 

除非我記錯了,應該立即打印語句後終止主線程。

相關問題