返回值和布尔_返回结果 4.1返回值 我们先来看一下random这个方法的Java源代码 public static double random() { return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble(); }

4.1返回值

  我们先来看一下random这个方法的Java源代码

public static double random() {
   return RandomNumberGeneratorHolder.randomNumberGenerator.nextDouble();
}

与原来的对比一下区别,有两处格式的区别

  • 第一处就是方法的声明上有不同
// 验证码方法
public static void code(int len)

// 随机数方法
public static double random()

仔细观察会发现,把void换成了double,这个改变就是方法返回值的声明,如果这个位置是void表示的是无返回值,否则就是有返回值,返回值可以是:int,String,double,boolean

  • 第二处不同就是方法返回语句有不同,在方法返回类型声明为double之后我们在方法执行的时候必须执行return 返回结果;这个返回结果的类型必须和方法声明的返回值一致。
public class Captcha{

  public static void main(String[] args){
    //打印出4位随机码
    System.out.println("本次的验证码是:"+code(1000));
  }


  /**
  * 得到验证码
  */
  public static int code(int len){
    // 得到随机数结果
    double val = Math.random();
    // 随机数结果*9+1 然后再乘以位数得到验证码
    int result = (int)((val*9+1)*len);
    return result;
  }
}


public class Captcha{

  public static void main(String[] args){
    // 得到验证码
    int codeValue = code(1000);

    // 如果 codeValue 在1000和9999之间,那么就是正确的4位随机数
    if(codeValue >= 1000 ){
      if(codeValue<=9999){
        System.out.println("本次的验证码是:"+codeValue);
      }
    }
  }


  /**
  * 得到验证码
  */
  public static int code(int len){
    // 得到随机数结果
    double val = Math.random();
    // 随机数结果*9+1 然后再乘以位数得到验证码
    int result = (int)((val*9+1)*len);
    return result;
  }
}

例子:公司到季度末了准备发奖金,如果销售额<100000,奖金按10%;销售额>=100000,奖金按9%;销售额>300000,奖金按7%;没有销售额,没有奖金

public class BonusDemo{

  public static void main(String[] args){
     int amount = bonus(0);
     System.out.println(amount);

     amount = bonus(80000);
     System.out.println(amount);

     amount = bonus(280000);
     System.out.println(amount);

     amount = bonus(500000);
     System.out.println(amount);
  }

  /**
  *   计算奖金
  */
  public static int bonus(int amount){
    if (amount<100000){
      return amount*10/100;
    } else if(amount>300000){
      return amount*7/100;
    } else if(amount>=100000){
      return amount*9/100;
    } else {
      return 0;
    }
  }

}

4.2布尔&&逻辑运算符

  关系运算符的结果要不然是true,要么是false,我们将这个类型成为布尔型。

boolean flag = x>0;
if(flag){
  System.out.println("x>0");
}

boolean也可以作为方法的参数或者返回类型

public static boolean isPass(int score){
  return score >= 60;
}

有些时候我们还可以对boolean数据进行!的运用,这个表示对boolean值进行否定,比如

boolean isPass = false;

if(!isPass){
  System.out.println("通过考试");
}

例子:税计算器

级数 全月应纳税所得额 税率 速算扣除数
2

超过3000元

至12000元的部分

10%    210
3

超过12000元

至25000元的部分

20%    1410
4

超过25000元

至35000元的部分

25%    2660

 

  •     如果某职工的工资收入为20000元,每月需要缴纳的五险一金费用为1500元,该职工目前有一个孩子正在上学,还有年满60岁的父母需要赡养,那么该职工可以享受的子女教育专项和扣除标准就是1000元/月,若职工是独生子女,赡养老人专项扣除标准为2000元/月。那么该职工应纳税额就是20000-5000-1500-1000-2000=10500元。根据以上税率表,可以算出,该职工需要缴纳的个人所得税为:10500*10%-210=840元。
  •      纳税人的每月个人所得税=(工资收入-五险一金-起征点5000元-专项附加扣除)*适用税率。

下面用代码来完成这个个税计算器:

public class Test{

  public static void main(String[] args) {
    int amount = compute(20000, 1500, true, true, true);
    System.out.println(amount);
    
    amount = compute(40000, 1500, true, true, true);
    System.out.println(amount);
  }

  /**
   * 计算个人缴纳的个税
   * 
   * @param income         工资收入
   * @param socialSecurity 5险一金金额
   * @param onlyChild      是否独生子女
   * @param hasChild       是否有小孩在读书
   * @param hasParents     是否有60岁以上的父母需要赡养
   * @return
   */
  public static int compute(int income, int socialSecurity, boolean onlyChild, boolean hasChild, boolean hasParents) {
    int total = income - 5000 - socialSecurity;

    if (hasChild) {
      total = total - 1000;
    }
    if (hasParents && onlyChild) {
      total = total - 2000;
    }
   if (total >= 3000 && total < 12000) {
      total = total * 10 / 100 - 210;
    } else if (total >= 12000 && total < 25000) {
      total = total * 20 / 100 - 1410;
    } else if (total >= 25000 && total < 35000) {
      total = total * 25 / 100 - 2660;
    }
    return total;
  }

}