学习笔记

91 阅读10分钟

例:判断是否为一个三角形

  
  Scanner scanner = new Scanner(System.in); //定义输入语句
  System.out.println("请输入三个数"); // 提示用户输入数据
  int number = scanner.nextInt(); // 用户输入的第一个值
  int newNumber = scanner.nextInt(); // 用户输入的第二个值
  int sum = scanner.nextInt(); // 用户输入的第三个值
  int a = number; // 将用户输入的第一个数赋值给a
  int b = newNumber; // 将用户输入的第二个数赋值给b
  int c = sum; //将用户输入的第三个数赋值给c
  if (a + b > c && b + c > a && c + a > b) { // 判断任意两边的值相加是否大于第三边,三项同时满足执行是,不满足执行否
              System.out.println("是一个三角形");
   } else {
              System.out.println("不是一个三角形");
   }
  //以上存在代码冗余,3至8行的代码可以进行简写
  Scanner scanner = new Scanner(System.in); //定义输入语句
  System.out.println("请输入三个数"); // 提示用户输入数据
  int a = scanner.nextInt(); // 用户输入的第一个值后  立马将值赋给a
  int b= scanner.nextInt(); // 用户输入的第二个值后   立马将值赋给b
  int c = scanner.nextInt(); // 用户输入的第三个值后  立马将值赋给c
  if (a + b > c && b + c > a && c + a > b) { // 判断任意两边的值相加是否大于第三边,三项同时满足执行是,不满足执行否
              System.out.println("是一个三角形");
   } else {
              System.out.println("不是一个三角形");
   }

多分支

if else if

多分支 n选1

  
  if(条件A){
      //满足A做A事
  }else if(条件B){
      //满足B做B事
  }else if(条件C){
      //满足C做C事
  }else{
      //什么条件都不符合,就执行此项
  }

例:输入成绩 判断优、良、差、不及格

  
   //输入成绩 判断优、良、差、不及格
          Scanner scanner = new Scanner(System.in); //定义输入语句
          System.out.println("请输入你的成绩"); // 提示用户输入数据
          int score = scanner.nextInt();// 将用户输入的值立马赋值给score
          if (score >= 80) { //判断用户输入的值是否大于等于80,若满足则执行输出语句,不满足则执行下面的else if 语句
              System.out.println("你的成绩为优");
          } else if (score >= 70) { //判断用户输入的值是否大于等于70,若满足则执行输出语句,不满足则执行下面的else if 语句
              System.out.println("你的成绩为良");
          } else if (score >= 60) { //判断用户输入的值是否大于等于60,若满足则执行输出语句,不满足则执行下面的else语句
              System.out.println("你的成绩为差");
          } else { //判断用户输入的值是否小于60,若满足则执行输出语句
              System.out.println("你的成绩为不合格");
          }

例:输入星期几 判断在一周内做了什么

  
  // 输入星期几 判断在一周内做了什么
          Scanner scanner = new Scanner(System.in); //定义输入语句
          System.out.println("请输入星期几"); // 提示用户输入数据
          int date = scanner.nextInt();// 将用户输入的值立马赋值给date
          if (date == 1) { //判断用户输入的值是否等于1,若满足则执行输出语句,不满足则执行下面的else if 语句
              System.out.println("玩游戏");
          } else if (date == 2) { //判断用户输入的值是否等于2,若满足则执行输出语句,不满足则执行下面的else if 语句
              System.out.println("日常洗漱");
          } else if (date == 3) { //判断用户输入的值是否等于3,若满足则执行输出语句,不满足则执行下面的else if 语句
              System.out.println("骑车");
          } else if (date == 4) { //判断用户输入的值是否等于4,若满足则执行输出语句,不满足则执行下面的else if 语句
              System.out.println("煮饭");
          } else if (date == 5) { //判断用户输入的值是否等于5,若满足则执行输出语句,不满足则执行下面的else if 语句
              System.out.println("下棋");
          } else if (date == 6) { //判断用户输入的值是否等于6,若满足则执行输出语句,不满足则执行下面的else语句
              System.out.println("睡觉");
          } else if (date == 7){ //判断用户输入的值是否等于7,若满足则执行输出语句,不满足则执行下面的else 语句
              System.out.println("逛公园");
          }else {
              System.out.println("一周只有七天哟!");
          }

switch

属于多分支的一种

  
  //语法
  switch(表达式/要去匹配的内容[是满足A还是B]){
          case 值A:
             满足A做A事;
          break;//退出
           case 值B:
             满足B做B事;
          break;//退出
      default:
          什么条件都不满足,执行此项;
          break;//退出
  }

例:输入123为春天 456为夏天 789为秋天 10 11 12为冬天

  
   //输入123为春天 456为夏天 789为秋天 10 11 12为冬天//方法一(建议使用此方法):
          Scanner scanner = new Scanner(System.in); //定义输入语句
          System.out.println("请输入月份"); // 提示用户输入数据
          int month = scanner.nextInt();// 将用户输入的值立马赋值给month
          switch (month) { //圆括号内写匹配的内容[上面定义的month值] month
              case 1:
              case 2:
              case 3:
                  System.out.println("是春天");
                  break; // 当有多个case干同一件事时可以共用一个 break,跳出
              case 4:
              case 5:
              case 6:
                  System.out.println("是夏天");
                  break;// 当有多个case干同一件事时可以共用一个 break,跳出
              case 7:
              case 8:
              case 9:
                  System.out.println("是秋天");
                  break;
              case 10:
              case 11:
              case 12:
                  System.out.println("是冬天");
                  break;// 当有多个case干同一件事时可以共用一个 break,跳出
          }
  ​
  //方法二(简写 存在版本不兼容的情况,不推荐):
          Scanner scanner = new Scanner(System.in); //定义输入语句
          System.out.println("请输入月份"); // 提示用户输入数据
          int month = scanner.nextInt();// 将用户输入的值立马赋值给month
          switch (month) {//圆括号内写匹配的内容[上面定义的month值] month
              case 1,2,3: //逗号将多个 case 分隔开 ,但要注意版本可能不兼容
                  System.out.println("是春天");
                  break;//退出
              case 4,5,6: //逗号将多个 case 分隔开 ,但要注意版本可能不兼容
                  System.out.println("是夏天");
                  break;//退出
              case 7,8,9: //逗号将多个 case 分隔开 ,但要注意版本可能不兼容
                  System.out.println("是秋天");
                  break;
              case 10,11,12://逗号将多个 case 分隔开 ,但要注意版本可能不兼容
                  System.out.println("是冬天");
                  break;//退出
          }

注:当有多个case干同一件事时可以共用一个 break,defalut也可以根据自己的需求来确定是否书写。 case 的顺序是可以调换的

例:做选择 按1:三角形面积 按2:长方形面积 按3:圆形面积

  
   // 做选择 按1:三角形面积  按2:长方形面积  按3:圆形面积
          Scanner scanner = new Scanner(System.in); //定义输入语句
          System.out.println("你选择的是:"); // 提示用户输入选择
          int choose = scanner.nextInt();// 将用户输入的值立马赋值给choose
          switch (choose) {
              case 1:
                  System.out.println("求三角形的面积"); // 提示用户选择1是求三角形的面积
                  System.out.println("请输入三角形的底:" ); // 提示用户输入三角形的底
                  int d = scanner.nextInt(); // 将用户输入底的值立马赋给 d
                  System.out.println("请输入三角形的高:"); // 提示用户输入三角形的高
                  int h = scanner.nextInt(); // 将用户输入高的值立马赋给 h
                  double s = d * h / 2; // 根据用户输入的数据算出三角形的面积
                  System.out.println("三角形的面积是:" + s); // 打印三角形的面积
                  break;//退出
              case 2:
                  System.out.println("求长方形的面积");// 提示用户选择2是长方形的面积
                  System.out.println("请输入长方形的宽:"); // 提示用户输入长方形的宽
                  int a = scanner.nextInt(); // 将用户输入宽的值立马赋给 a
                  System.out.println("请输入长方形的高:"); // 提示用户输入长方形的高
                  int b = scanner.nextInt(); // 将用户输入高的值立马赋给 b
                  int c = a * b; //根据用户输入的数据算出长方形的面积
                  System.out.println("长方形的面积是:" + c); //打印长方形的面积
                  break;//退出
              case 3:
                  System.out.println("求圆的面积"); //提示用户选择3是圆的面积
                  System.out.println("请输入圆的半径:"); // 提示用户输入圆的半径
                  int r = scanner.nextInt(); // 将用户输入半径的值立马赋给 r
                  final double PI = 3.14; // 定义常量 PI 的值为 3.14
                  double circle = PI * r * r; //根据用户输入的数据算出圆的面积
                  System.out.println("圆的面积是:" + circle); //打印圆的面积
                  break;//退出
          }
  ​
  ​
  //当在 case 里求面积的变量 s 重名时,有三种解决方法
  //方法一: 像上面代码中的12、21、29行分别给变量命不同的名//方法二:使用作用域 , 此时变量 s 只在每个 case 对应的花括号内生效
   switch (choose) {
              case 1:{
                  System.out.println("求三角形的面积"); // 提示用户选择1是求三角形的面积
                  System.out.println("请输入三角形的底:" ); // 提示用户输入三角形的底
                  int d = scanner.nextInt(); // 将用户输入底的值立马赋给 d
                  System.out.println("请输入三角形的高:"); // 提示用户输入三角形的高
                  int h = scanner.nextInt(); // 将用户输入高的值立马赋给 h
                  double s = d * h / 2; // 根据用户输入的数据算出三角形的面积
                  System.out.println("三角形的面积是:" + s); // 打印三角形的面积
                  break;//退出
                  }
       case 2:{
                  System.out.println("求长方形的面积");// 提示用户选择2是长方形的面积
                  System.out.println("请输入长方形的宽:"); // 提示用户输入长方形的宽
                  int a = scanner.nextInt(); // 将用户输入宽的值立马赋给 a
                  System.out.println("请输入长方形的高:"); // 提示用户输入长方形的高
                  int b = scanner.nextInt(); // 将用户输入高的值立马赋给 b
                  int s = a * b; //根据用户输入的数据算出长方形的面积
                  System.out.println("长方形的面积是:" + s); //打印长方形的面积
                  break;//退出
           }
          }
  //方法三:在外面声明会有一个变量 s 值会存放在变量里
          Scanner scanner = new Scanner(System.in); //定义输入语句
          System.out.println("你选择的是:"); // 提示用户输入选择
          int choose = scanner.nextInt();// 将用户输入的值立马赋值给choose
          double s;
          switch (choose) {
              case 1:
                  System.out.println("求三角形的面积"); // 提示用户选择1是求三角形的面积
                  System.out.println("请输入三角形的底:" ); // 提示用户输入三角形的底
                  int d = scanner.nextInt(); // 将用户输入底的值立马赋给 d
                  System.out.println("请输入三角形的高:"); // 提示用户输入三角形的高
                  int h = scanner.nextInt(); // 将用户输入高的值立马赋给 h
                  s = d * h / 2; // 根据用户输入的数据算出三角形的面积
                  System.out.println("三角形的面积是:" + s); // 打印三角形的面积
                  break;//退出
              case 2:
                  System.out.println("求长方形的面积");// 提示用户选择2是长方形的面积
                  System.out.println("请输入长方形的宽:"); // 提示用户输入长方形的宽
                  int a = scanner.nextInt(); // 将用户输入宽的值立马赋给 a
                  System.out.println("请输入长方形的高:"); // 提示用户输入长方形的高
                  int b = scanner.nextInt(); // 将用户输入高的值立马赋给 b
                  s = a * b; //根据用户输入的数据算出长方形的面积
                  System.out.println("长方形的面积是:" + s); //打印长方形的面积
                  break;//退出
          }

例:运输公司对用户计算运费,路程越远每公里运费越低。每公里每吨货物基本运费是 p(自定义基础运费),货物重量为 w 吨,距离为 s 公里,折扣为 d,总运费 f = pws(1-d)

  
          //运输公司对用户计算运费,路程越远每公里运费越低。
          //每公里每吨货物基本运费是 p(自定义基础运费),货物重量为 w 吨,距离为 s 公里,折扣为 d,总运费 f = pws(1-d)
          //
          //s < 250km          折扣为0
          //250<= s < 500                  2%
          //500<= s < 1000                 5%
          //1000<= s < 2000                 8%
          //2000<= s < 3000                 10%
          //3000<= s                        15%
  ​
  //方法一: 这种方法代码过于长,不方便看
          Scanner scanner = new Scanner(System.in); //定义输入语句
          int p = 8;//基础价格为 8元
          System.out.println("请输入重量:"); // 提示用户输入重量
          int w = scanner.nextInt();// 将用户输入重量的值立马赋值给 w
          System.out.println("请输入距离:"); // 提示用户输入距离
          int s = scanner.nextInt(); //将用户输入距离的值立马赋值给 s
          double f;// 声明会有一个变量 f 值会存放在变量里
          if (s < 250) {//当距离满足小于250时,执行下面 f = p * w * s 语句
              f = p * w * s;
          }
          else if (250 <= s && s < 500) {//当距离满足大于等于250小于500时,执行下面f = p * w * s * 0.98;的语句
              f = p * w * s * 0.98;
          }
          else if (500 <= s && s < 1000) {//当距离满足大于等于500小于1000时,执行下面f = p * w * s * 0.95;的语句
              f = p * w * s * 0.95;
          }
          else if (1000 <= s && s < 2000) {//当距离满足大于等于1000小于2000时,执行下面f = p * w * s * 0.92;的语句
              f = p * w * s * 0.92;
          }
          else if (2000 <= s && s < 3000) {//当距离满足大于等于2000小于3000时,执行下面f = p * w * s * 0.85;的语句
              f = p * w * s * 0.85;
          }
          else{//当距离满足大于3000时,执行下面f = p * w * s * 0.8;的语句
              f = p * w * s * 0.8;
          }
          System.out.println("你的运费是:" + f); //打印最终结果
      }
  ​
  //方法二:简写
  Scanner scanner = new Scanner(System.in); //定义输入语句
          int p = 8;//基础价格为 8元
          System.out.println("请输入重量:"); // 提示用户输入重量
          int w = scanner.nextInt();// 将用户输入重量的值立马赋值给 w
          System.out.println("请输入距离:"); // 提示用户输入距离
          int s = scanner.nextInt(); //将用户输入距离的值立马赋值给 s
          double f;// 声明会有一个变量 f 值会存放在变量里
          double d = 0 ; //折扣价初始值为0,因为折扣的值在不停的变化,所以开始将值初始化,后续在不同条件中更改折扣的值即可
          if (250 <= s && s < 500) {//当距离满足大于等于250小于500时,执行下面 d =  0.02的语句
              d = 0.02;//折扣价为0.02
          }
          else if (500 <= s && s < 1000) {//当距离满足大于等于500小于1000时,执行下面 d =  0.05的语句
              d = 0.05;//折扣价为0.05
          }
          else if (1000 <= s && s < 2000) {//当距离满足大于等于1000小于2000时,执行下面 d =  0.08的语句
              d = 0.08;//折扣价为0.08
          }
          else if (2000 <= s && s < 3000) {//当距离满足大于等于2000小于3000时,执行下面 d =  0.1的语句
              d = 0.1;//折扣价为0.1
          }
          else if (3000 <= s) {//当距离满足大于等于3000时,执行下面 d =  0.15的语句
              d = 0.15;//折扣价为0.15
          } 
          f = p * w * s * d;
          System.out.println("你的运费是:" + f);
      }

例:企业发放奖金,根据利润 profit (万元)提成 commission

  
      //企业发放奖金,根据利润 profit (万元)提成 commission,规则如下:
      //利润 < 10万                       提成10%
      //10万<=利润 < 20万           7.5%
      //20万<=利润 < 40万           5%
      //40万<=利润 < 60万           3%
      //60万<=利润 < 100万          1.5%
      //100万<=利润                  1%
      //输入员工创造的利润,求出他的提成。
  ​
   Scanner scanner = new Scanner(System.in); //定义输入语句
          System.out.println("请输入你创造的利润:"); // 提示用户输入创造的利润
          int p = scanner.nextInt();// 将用户输入的值立马赋值给w
          double money;// 声明会有一个变量 money 值会存放在变量里
          if (p < 10) {
              money = p * 0.1; 
          } else if (p >= 10 && p < 20) {
              money = 10 * 0.1 + (p - 10) * 0.075;
          } else if (p >= 20 && p < 40) {
              money = 10 * 0.1 + 10 * 0.075 + (p - 20) * 0.05;
          } else if (p >= 40 && p < 60) {
              money = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (p - 40) * 0.03;
          } else if (p >= 60 && p < 100) {
              money = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (p - 60) * 0.015;
          } else {
              money = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (p - 100) * 0.01;
          }
          System.out.println("最终你获得的提成是:" + money + "万元");
      }