Java经典编程三百例21-30

文章目录

  • 21.为新员工分配部门
    • (1)代码:
    • (2)结果:
  • 22.用switch语句根据消费金额计算折扣
    • (1)代码:
    • (2)结果:
  • 23.判断用户输入月份的季节
    • (1)代码:
    • (2)结果:
  • 24.使用while循环语句与自增运算符循环遍
    • (1)代码:
    • (2)结果:
  • 25.使用for循环输出杨辉三角形(*)
    • (1)代码:
    • (2)结果:
  • 26.使用嵌套循环在控制台上输出九九乘法表
    • (1)代码:
    • (2)结果:
  • 27.使用while循环计算 1+1/2!+1/3!···1/20!
    • (1)代码:
    • (2)结果:
  • 28.使用for循环输出空心的菱形
    • (1)代码:
    • (2)结果:
    • (3)注意:
  • 29.终止循环体
    • (1)代码:
    • (2)结果:
    • (3)注意:
  • 30.循环体的过滤器
    • (1)代码:
    • (2)结果:
    • (3)注意:

21.为新员工分配部门

(1)代码:

import java.util.Scanner;

public class Demo11 {
    public static void main(String[] args) {
      Scanner scan = new Scanner(System.in);
        System.out.println("请输入新员工的姓名:");
        String name = scan.nextLine(); //接收员工名称
        System.out.println("请输入新员工应聘的编程语言");
        String language = scan.nextLine(); //接收员工的应聘语言
        //根据编程语言确定员工分配的部门
        switch(language.hashCode()){
            case 3254818:  //java的哈希码
            case 2301506:   //Java的哈希码
            case 2269730:   //JAVA的哈希码
                System.out.println("员工"+name+"被分配到Java程序开发部门");
                break;
                case 3104:  //c#的哈希码
                case 2112:  //C#的哈希码
                    System.out.println("员工"+name+"被分配到C#程序开发部门");
                    break;
                case -709190099:    //asp.net的哈希码
                case 955463181:     //Asp.net的哈希码
                case 9745901:       //ASP.NET的哈希码
                    System.out.println("员工"+name+"被分配到Asp.net程序开发部门");
                    break;
                    default:
                        System.out.println("本公司不需要"+language+"语言的程序开发人员。");
        }
    }
}

(2)结果:

请输入新员工的姓名:
张三
请输入新员工应聘的编程语言
C#
员工张三被分配到C#程序开发部门

22.用switch语句根据消费金额计算折扣

(1)代码:

import java.util.Scanner;

public class Demo11 {
    public static void main(String[] args) {
      float money = 1170;
      String rebate = "";
      if(money > 200){
          int grade = (int) money / 200;
          switch (grade){
              case 1:
                  rebate = "九五折";
                  break;
              case 2:
                  rebate = "九折";
                  break;
              case 3:
                  rebate = "八五折";
                  break;
              case 4:
                  rebate = "八三折";
                  break;
              case 5:
                  rebate = "八折";
                  break;
              case 6:
                  rebate = "七八折";
                  break;
              case 7:
                  rebate = "七五折";
                  break;
              case 8:
                  rebate = "七三折";
                  break;
              case 9:
                  rebate = "七折";
                  break;
              case 10:
                  rebate = "六五折";
                  break;
                  default:
                      rebate="六折";
          }
      }
        System.out.println("您的累计消费金额为:"+money);   //输出消费金额
        System.out.println("您将享受"+ rebate +"优惠!");  //输出折扣比例
    }
}

(2)结果:

您的累计消费金额为:1170.0
您将享受八折优惠!

23.判断用户输入月份的季节

(1)代码:

import java.util.Scanner;

public class Demo11 {
    public static void main(String[] args) {
     Scanner scan = new Scanner(System.in);
     //提示用户输入月份
        System.out.println("请输入一个月份,我能告诉你它属于哪个季节。");
        int month = scan.nextInt();     //接收用户输入
        switch (month){
            case 12:
            case 1:
            case 2:
                System.out.println("您输入的月份属于冬季。");
                break;
            case 3:
            case 4:
            case 5:
                System.out.println("您输入的月份属于春季。");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("您输入的月份属于夏季。");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("您输入的月份属于秋季。");
                break;
                default:
                    System.out.println("你那有"+month+"月份吗?");

        }
    }
}

(2)结果:

请输入一个月份,我能告诉你它属于哪个季节。
3
您输入的月份属于春季。

24.使用while循环语句与自增运算符循环遍

(1)代码:

public class Demo11 {
    public static void main(String[] args) {
     //创建鸟类数组
        String[] aves = new String[]{"白鹭","黄鹂","鹦鹉","乌鸦","喜鹊","布谷鸟","斑鸠","百灵鸟"};
        int index = 0;  //创建索隐变量
        System.out.println("我的花园里有很多鸟,大约包括:");
        while (index<aves.length){          //遍历数组
            System.out.println(aves[index++]);       //自增索引值
        }
    }
}

(2)结果:

我的花园里有很多鸟,大约包括:
白鹭
黄鹂
鹦鹉
乌鸦
喜鹊
布谷鸟
斑鸠
百灵鸟

25.使用for循环输出杨辉三角形(*)

(1)代码:

public class Demo11 {
    public static void main(String[] args) {
     int triangle[][] = new int[10][];      //创建二维数组
        //遍历二维数组的第一层
        for (int i = 0; i < triangle.length; i++) {
            triangle[i] = new int[i+1];     //初始化第二层数组的大小
            //遍历第二层数组
            for (int j = 0; j <= i; j++) {
                if(i==0||j==0||j==i){       //将两侧的数组元素赋值为1
                    triangle[i][j]=1;
                }else {     //其他数值通过公式计算
                    triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];
                }
                System.out.print(triangle[i][j]+"\t");  //输出数组元素
            }
            System.out.println();
        }
    }
}

(2)结果:

1	
1	1	
1	2	1	
1	3	3	1	
1	4	6	4	1	
1	5	10	10	5	1	
1	6	15	20	15	6	1	
1	7	21	35	35	21	7	1	
1	8	28	56	70	56	28	8	1	
1	9	36	84	126	126	84	36	9	1	

26.使用嵌套循环在控制台上输出九九乘法表

(1)代码:

public class Demo11 {
    public static void main(String[] args) {
        for (int i = 0; i <= 9; i++) {
            for (int j = 0; j <= i; j++) {
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}

(2)结果:

0*0=0	
0*1=0	1*1=1	
0*2=0	1*2=2	2*2=4	
0*3=0	1*3=3	2*3=6	3*3=9	
0*4=0	1*4=4	2*4=8	3*4=12	4*4=16	
0*5=0	1*5=5	2*5=10	3*5=15	4*5=20	5*5=25	
0*6=0	1*6=6	2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	
0*7=0	1*7=7	2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	
0*8=0	1*8=8	2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	
0*9=0	1*9=9	2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81	

27.使用while循环计算 1+1/2!+1/3!···1/20!

(1)代码:

import java.math.BigDecimal;

public class Demo11 {
    public static void main(String[] args) {
        BigDecimal sum = new BigDecimal(0.0);  //和
        BigDecimal factorial = new BigDecimal(1.0); //阶乘项的计算结果
        int i = 1;
        while (i<=20){
                sum = sum.add(factorial);   //累加各项阶乘的和
                ++i;    //i加1
                factorial = factorial.multiply(new BigDecimal(1.0 / i));    //计算阶乘项
            }
            System.out.println("1+1/2!+1/3!+···+1/20!的计算结果等于:\n"+sum);//输出计算结果
        }
}

(2)结果:

1+1/2!+1/3!+···+1/20!的计算结果等于:
1.71828182845904522367258882524732563634867246268558104448130832136101139366719986414383110243797108748822820657493330665752903534700022508204525385549479876951292493516361991885142411580915233808389198581342610980977425822951724476374113374431295345516733481291917383751991568557019209000617394017755970330759280319424925748716392429788018461622511631047241914024775263254452027548084334842631749679270930789639542724477953673333791555400257219557963341089085618184152725912383836106812569589258574113531875910271222819280308083619226237539764181652472718046378704910462924352995976893461209516866339555490458432187283021232937484781081946952237499593023333299830547132009915333667625253213008545235615683712431845561218831886238965727822680526029924244310460181428675093053813137695411922636380686046919663567678071558475494384765625

28.使用for循环输出空心的菱形

(1)代码:

import java.math.BigDecimal;

public class Demo11 {
    public static void main(String[] args) {
        printHollowRhombus(7); //输出7行的零星
    }

    public static void printHollowRhombus(int size) {
        if (size % 2 == 0) {
            size++;     //计算菱形大小
        }
        for (int i = 0; i < size / 2 + 1; i++) {
            for (int j = size / 2 + 1; j > i + 1; j--) {
                System.out.print("  ");
            }
            for (int j = 0; j < 2 * i + 1; j++) {
                if (j == 0 || j == 2 * i) {
                    System.out.print("*");    //输出零星上半部边缘
                } else {
                    System.out.print("  ");    //输出零星上半部空心
                }
            }
            System.out.println(""); //换行
        }
        for (int i = size/2+1; i < size ; i++) {
            for (int j = 0; j < i - size / 2; j++) {
                System.out.print("  ");    //输出菱形左下角空白
            }
            for (int j = 0; j < 2 * size - 1 - 2 * i; j++) {
                if (j == 0 || j == 2 * (size - i - 1)) {
                    System.out.print("*");    //输出菱形下半部边缘
                } else {
                    System.out.print("  ");    //输出菱形下半部空心
                }
            }
            System.out.println(""); //换行
        }
    }
}

(2)结果:

      *
    *  *
  *      *
*          *
  *      *
    *  *
      *

(3)注意:

Size = 7
i=0,i<4
	J=4,4>1 输出-
	J=3,3>1 输出-
	J=2,2>1 输出-
	J=1, 1>1 跳出
		J=0,j<1 输出*
		J=1,j<1 跳出
			换行
----
输出效果:---*
----
i=1,i<4
	J=4,4>2 输出-
	J=3,3>2 输出-
	J=2,2>2 跳出
		J=0,j<3 输出*
		J=1,j<3输出-
		J=2,j<3 输出*
		J=3,j<3 跳出
			换行
----
输出效果:--*-*
----
i=2,i<4
	J=4,4>3 输出-
	J=3,3>3 跳出
		J=0,j<5 输出*
		J=1,j<5 输出-
		J=2,j<5 输出-
		J=3,j<5 输出-
		J=4,j<5 输出*
		J=5,j<5 跳出
			换行
----
输出效果:-*---*
----	
i=3,i<4
	J=4,j>4 跳出
		J=0,j<7 输出*
		J=1,j<7 输出-
		J=2,j<7 输出-
		J=3,j<7 输出-
		J=4,j<7 输出-
		J=5,j<7 输出-
		J=6,j<7输出*
		J=7,j<7 跳出
----
输出效果:*------*
----			
i=4,i<4 跳出
-------上半部分
-------下半部分
i=4,i<7
	J=0,j<1 输出-
		J=0,j<5 输出*
		J=1,j<5 输出-
		J=2,j<5 输出-
		J=3,j<5 输出-
		J=4,j<5 输出*
		J=5,j<5 跳出
		换行
----
输出效果:-*---*
----	
i=5,i<7
	J=0,j<2 输出-
	J=1,j<2 输出-
	J=2,j<2 跳出
		J=0,j<3,输出*
		J=1,j<3 输出-
		J=2,j<3 输出*
		J=3,j<3 跳出
		换行
----
输出效果:--*-*
----	
i=6,i<7
	J=0,j<3 输出-
	J=1,j<3 输出-
	J=2,j<3 输出-
	J=3,j<3 跳出
		J=0,j<1,输出*
		J=1,j<1 跳出
		换行
----
输出效果:---*
----	
i=7跳出

29.终止循环体

(1)代码:

public class Demo11 {
    public static void main(String[] args) {
        System.out.println("\n--------中断单层循环得例子----------");
        String[] array = new String[]{"白鹭", "丹顶鹤", "黄鹂", "鹦鹉", "乌鸦", "喜鹊", "老鹰", "布谷鸟", "老鹰", "灰纹鸟", "老鹰", "百灵鸟"};
        System.out.println("在你发现一只老鹰之前,告诉我有什么鸟。");
        for (String string : array) {//for遍历数组
            if (string.equals("老鹰"))    //如果遇到老鹰
                break;  //中断循环
                System.out.print("有:" + string + "\t\t\t");//否则输出数组
        }
        System.out.println("\n\n---------终断双层循环得例子-------------");
        //创建成绩数组
        int[][] myScores = new int[][]{{67, 78, 63, 22, 66}, {55, 68, 78, 95, 44}, {95, 97, 92, 93, 81}};
        System.out.println("宝宝这次考试成绩:\n数学\t 语文\t 英语\t 美术\t 历史");
        loop:for(int[] is : myScores){ //遍历成绩表格
            for(int i: is){
                System.out.print(i + "\t\t");
                if(i<60){
                    System.out.println("\n等,"+i+"分的是什么?这个为什么不及格");
                    break loop;
                }
            }
            System.out.println();
        }
    }
}

(2)结果:

--------中断单层循环得例子----------
在你发现一只老鹰之前,告诉我有什么鸟。
有:白鹭			有:丹顶鹤			有:黄鹂			有:鹦鹉			有:乌鸦			有:喜鹊			

---------终断双层循环得例子-------------
宝宝这次考试成绩:
数学	 语文	 英语	 美术	 历史
67		78		63		22		
等,22分的是什么?这个为什么不及格

(3)注意:

本实例主要技术是break语句。break语句用于强行退出循环。使用带标签的break语句,可以强行退出多层循环。例如,要退出双层的for循环,可以使用下面的语法:
label:
for(元素变量x:遍历对象obj){
for(元素变量x1:遍历对象obj1){
		引用了x的java语句;
		if(条件表达式){
		break label
		}
}
在上面的语法中,如果执行到break,正常情况下应该结束内层循环去执行外层循环,但是由于break后带有标签,所以程序将结束标签出的外层循环。

30.循环体的过滤器

(1)代码:


public class Demo11 {
    public static void main(String[] args) {
        String[] array = new String[]{"白鹭", "丹顶鹤", "黄鹂", "鹦鹉", "乌鸦", "喜鹊", "老鹰", "布谷鸟", "老鹰", "灰纹鸟", "老鹰", "百灵鸟"};
        System.out.println("在我的花园里有很多鸟类,但是最近来了几只老鹰,请帮我把他们抓走。");
        int eagleCount = 0;
        for (String string : array) {//for遍历数组
            if (string.equals("老鹰")) {   //如果遇到老鹰
                System.out.println("发现一只老鹰,已经抓到笼子里。");
                eagleCount++;
               continue;
            }//终断循环
            System.out.println("搜索鸟类,发现了:"+string);//否则输出数组元素
        }
        System.out.println("一共捉到了:"+eagleCount+"只老鹰。");

    }
}


(2)结果:

在我的花园里有很多鸟类,但是最近来了几只老鹰,请帮我把他们抓走。
搜索鸟类,发现了:白鹭
搜索鸟类,发现了:丹顶鹤
搜索鸟类,发现了:黄鹂
搜索鸟类,发现了:鹦鹉
搜索鸟类,发现了:乌鸦
搜索鸟类,发现了:喜鹊
发现一只老鹰,已经抓到笼子里。
搜索鸟类,发现了:布谷鸟
发现一只老鹰,已经抓到笼子里。
搜索鸟类,发现了:灰纹鸟
发现一只老鹰,已经抓到笼子里。
搜索鸟类,发现了:百灵鸟
一共捉到了:3只老鹰。

(3)注意:

1.break 用break语句可以使流程跳出switch语句体,也可以用break语句在循环结构终止本层循环体,从而提前结束本层循环。 使用说明: (1)只能在循环体内和switch语句体内使用break;
(2)当break出现在循环体中的switch语句体内时,起作用只是跳出该switch语句体,并不能终止循环体的执行。若想强行终止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件则跳出本层循环体。
2.continue continue语句的作用是跳过本次循环体中余下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为仅结束本次循环。
注意:continue语句并没有使整个循环终止。

扩展资料:
在while和do-while循环中,continue语句使得流程直接跳到循环控制条件的测试部分,然后决定循环是否继续进行。在for循环中,遇到continue后,跳过循环体中余下的语句,而去对for语句中的“表达式3”求值,然后进行“表达式2”的条件测试,最后根据“表达式2”的值来决定for循环是否执行。再循环体内,不论continue是作为何种语句中的成分,都将按上述功能执行,这点与break有所不同。

你可能感兴趣的:(Java经典编程300例)