手把手教你用Java實(shí)現(xiàn)計(jì)算BMI值、HashSet集合
一、Java實(shí)現(xiàn)計(jì)算BMI值
1.計(jì)算體重指數(shù)BMI,在國際上是用來衡量人體的胖瘦程度以及是否健康的一個(gè)標(biāo)準(zhǔn)。
2.計(jì)算BMI值的算法是BMI=(體重)kg/(身高)^2(m)
3.BMI的標(biāo)準(zhǔn)
男性:BMI值低于20,屬于過輕;BMI值20-25,屬于適中;BMI值25-30,屬于過重;BMI值30-35,屬于肥胖;BMI值高于35,屬于非常肥胖;
女性:BMI值低于19,屬于過輕;BMI值19-24,屬于適中;BMI值24-29,屬于過重;BMI值29-34,屬于肥胖;BMI值高于34,屬于非常肥胖;
4.例子的實(shí)現(xiàn):
- import java.util.Scanner;
- public class Java01 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- String sex;
- double height,weight;//定義身高、體重
- double bmi;//計(jì)算保存BMI值
- Scanner scan = new Scanner(System.in);
- System.out.println("請輸入您的性別:");
- sex=scan.next();
- System.out.println("請輸入您的身高(m):");
- height=scan.nextDouble();
- System.out.println("請輸入您的體重(kg):");
- weight=scan.nextDouble();
- bmi=weight/height/height;
- if(sex.equals("男")){
- if(bmi<20){
- System.out.println("您的體重過輕!您的BMI值為:"+bmi);
- }else if(bmi<25&&bmi>=20){
- System.out.println("您的體重適中!您的BMI值為:"+bmi);
- }else if(bmi<30&&bmi>=25){
- System.out.println("您的體重過重!您的BMI值為:"+bmi);
- }else if(bmi<35&&bmi>=30){
- System.out.println("您的體重肥胖!您的BMI值為:"+bmi);
- }else{
- System.out.println("您的體重非常肥胖!您的BMI值為:"+bmi);
- }
- }else if(sex.equals("女")){
- if(bmi<19){
- System.out.println("您的體重過輕!您的BMI值為:"+bmi);
- }else if(bmi<24&&bmi>=19){
- System.out.println("您的體重適中!您的BMI值為:"+bmi);
- }else if(bmi<29&&bmi>=24){
- System.out.println("您的體重過重!您的BMI值為:"+bmi);
- }else if(bmi<34&&bmi>=29){
- System.out.println("您的體重肥胖!您的BMI值為:"+bmi);
- }else if(bmi>=34){
- System.out.println("您的體重肥胖!您的BMI值為:"+bmi);
- }
- }else{
- System.out.print("你輸入有誤!");
- }
- }
- }
運(yùn)行的結(jié)果是:
從上面代碼中,如果用戶輸入的不是男或女,則返回你輸入有誤。輸入你的性別、身高(m)和體重(kg),再通過計(jì)算BMI值,然后判斷您的人體的胖瘦程度。
二、HashSet集合
1.HashSet集合是Set接口的一個(gè)實(shí)現(xiàn)類,它存儲的元素不可以是有重復(fù)的方法,而且元素也是無序的。如果給HashSet集合添加一個(gè)對象的時(shí)候,第一是調(diào)用對象的hashCode()方法來判斷元素所在的存儲位置,再用equals()方法調(diào)用這個(gè)位置的元素有沒有重復(fù)的元素。
2.HashSet集合的用法
- import java.util.HashSet;
- import java.util.Iterator;
- public class t6 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //創(chuàng)建HashSet集合
- HashSet hs=new HashSet();
- //向hs集合添加元素
- hs.add("aa");
- hs.add("bb");
- hs.add("cc");
- hs.add("dd");
- //獲取Iterator對象
- Iterator it = hs.iterator();
- //通過循環(huán),判斷hs集合是否有元素
- while(it.hasNext()){
- String s=(String)it.next();
- System.out.println(s);
- }
- }
- }
運(yùn)行的結(jié)果是:
三、如何把Student對象存入HashSet集合中?
- import java.util.*;
- //定義Student類
- class Student{
- private String id;
- private String name;
- public Student(String id,String name){
- this.id=id;
- this.name=name;
- }
- //重寫toString()方法
- public String toString(){
- return id+":"+name;
- }
- //重寫hashCode()方法
- public int hashCode(){
- return id.hashCode();
- }
- //重寫equals()方法
- public boolean equals(Object o){
- if(this==o){
- return true;
- }
- if(!(o instanceof Student)){
- return false;
- }
- Student s=(Student)o;
- boolean b=this.id.equals(s.id);
- return b;
- }
- }
- public class t7 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- HashSet hs=new HashSet();//創(chuàng)建HashSet對象
- Student s1=new Student("1","張三");//Student對象
- Student s2=new Student("2","李四");
- Student s3=new Student("2","李四");
- Student s4=new Student("3","小王");
- Student s5=new Student("1","張三");
- hs.add(s1);
- hs.add(s2);
- hs.add(s3);
- hs.add(s4);
- hs.add(s5);
- System.out.println(hs);
- }
- }
運(yùn)行的結(jié)果是:
從上面代碼中,如果沒有在Student類重寫hashCode()方法和equals()方法的時(shí)候,會出現(xiàn)重復(fù)的元素。在hashCode()方法會返回它的id屬性的值,在equals()方法中去比較對象的id屬性是否有一樣,然后返回一個(gè)結(jié)果。
四、總結(jié)
本文主要介紹了Java實(shí)現(xiàn)計(jì)算BMI值、HashSet集合、如何把Student對象存入HashSet集合中。這個(gè)BMI值主要是在國際上是用來衡量人體的胖瘦程度以及是否健康的一個(gè)標(biāo)準(zhǔn)。HashSet集合是Set接口的一個(gè)實(shí)現(xiàn)類,它存儲的元素不可以是有重復(fù)的方法,而且元素也是無序的。把Student對象存入到hashSet中需要重寫這個(gè)Student類的重寫hashCode()方法和equals()方法,才不會出現(xiàn)重復(fù)的元素。通過本文的學(xué)習(xí),希望對你有所幫助!
本文轉(zhuǎn)載自微信公眾號「Java進(jìn)階學(xué)習(xí)交流」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java進(jìn)階學(xué)習(xí)交流公眾號。