【Java】【控制流程】
#栗子 丢手帕 & 菱形 & 金字塔import java.io.*;import java.util.*; public class Test_one { public static void main(String[] args){ //Demo 125 接口的实现 interface Usb{ } /* //Demo121 丢手帕 class Child{ int no; Child nextChild = null; public Child(int no){ //给一个编号 this.no = no; } } //单向环形链表 class CycLink { //先定义一个指向链表第一个小孩的引用 //指向第一个小孩的引用,不能动 Child firstChild = null; Child temp = null; int len = 0;//表示共有多少个小孩 int k = 0;//从第几个小孩开始 int m = 0;//数几下 //设置m数几下 public void setM(int m) { this.m = m; } //设置环形链表大小 public void setLen(int len) { this.len = len; } //设置从第几个人开始数数 public void setK(int k) { this.k = k; } //开始play public void play() { Child temp = this.firstChild; //1. 先找到开始数数的人 for (int i = 1; i < k; i++) { temp = temp.nextChild; } while (this.len != 1) { //2. 数m下 for (int j = 1; j < m; j++) { temp = temp.nextChild; } //找到要出圈的前一个小孩 Child temp2 = temp; while (temp2.nextChild != temp) { temp2 = temp2.nextChild; } //3. 将数到m的小孩,退出圈 temp2.nextChild = temp.nextChild; //让temp指向下一个数数的小孩 temp = temp.nextChild; this.len--; } System.out.println("最后出圈的小孩: " + temp.no); } //初始化单向环形链表 public void createLink() { for (int i = 1; i <= len; i++) { if (i == 1) { //创建第一个小孩 Child ch = new Child(i); this.firstChild = ch; this.temp = ch; } else { //创建最后一个小孩 if (i == len) { Child ch = new Child(i); temp.nextChild = ch; temp = ch; temp.nextChild = this.firstChild; } else { //继续创建小孩 Child ch = new Child(i); temp.nextChild = ch; temp = ch; } } } } //打印该循环链表 public void show() { //定义一个跑龙套 Child temp = this.firstChild; do { System.out.print(temp.no + " "); temp = temp.nextChild; } while (temp != this.firstChild); } } CycLink cyclink = new CycLink(); cyclink.setLen(5); cyclink.createLink(); cyclink.setK(2); cyclink.setM(2); cyclink.show(); cyclink.play();*/ /* //类的成员方法练习,编写一个成员函数,从键盘输入一个整数(1-9),打印出对应的乘法表 class Cfb{ public void cf(){ try{ //输入流,从键盘接收数 InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); //给出提示 System.out.println("请输入1-9,按0退出: "); //从控制台读取一行数据 String a1 = br.readLine(); //把String转化成int int num1 = Integer.parseInt(a1); for(int i=1;i<=num1;i++){ for(int j=1;j<=i;j++){ System.out.print(i + "*" + j + "=" + (i*j) + "\t"); } System.out.println(); } }catch (Exception e){ e.printStackTrace(); } } } Cfb c = new Cfb(); c.cf();*/ /* //空心菱形 int lay = 7; //上半部分 int m = lay/2 + 1; for(int i=1;i<=m;i++){ //空格 for(int j=0;j<(m-i);j++){ System.out.print(" "); } //* for(int z=1;z<=(2*i-1);z++){ if(z==1 || z==(2*i-1)){ System.out.print("*"); } else{ System.out.print(" "); } } System.out.println(); } //下半部分 int n = lay/2; for(int i=1;i<=n;i++) { //空格 for (int j = 1; j <= i; j++) { System.out.print(" "); } //* for (int z = 1; z <= (2 * (n - i) + 1); z++) { if (z == 1 || z == (2 * (n - i) + 1)) { System.out.print("*"); } else { System.out.print(" "); } } System.out.println(); }*/ /* //实心菱形 int lay = 7; //上半部分 int m = lay/2 + 1; for(int i=1;i<=m;i++){ //空格 for(int j=0;j<(m-i);j++){ System.out.print(" "); } //* for(int z=1;z<=(2*i-1);z++){ System.out.print("*"); } System.out.println(); } //下半部分 int n = lay/2; for(int i=1;i<=n;i++){ //空格 for(int j=1;j<=i;j++){ System.out.print(" "); } //* for(int z=1;z<=(2*(n-i)+1);z++){ System.out.print("*"); } System.out.println(); }*/ /* * *** *************//* int lay = 4; for(int i=1;i<=lay;i++){ for(int j=0;j<(lay-i);j++){ System.out.print(" "); } for(int z=1;z<=(2*i-1);z++){ System.out.print("*"); } System.out.println(); }*/ /* * ** *** **** *//* int lay = 4; for(int i=1;i<=lay;i++){ for(int j=1;j<=i;j++){ System.out.print("*"); } System.out.println(); }*/ }} #栗子 【备注】
接口中的变量,加不加static都是静态的,不能用private 和 protected修饰,因为接口要被各种继承或者实现
//# 栗子 已知手掌游戏机一台320元,MP3一台260.公司举行抽奖大会,公司有18人,一等奖游戏机,二等奖MP3,购入5台游戏机,13台MP3。// 问总价多少,公司实际平均给每人花费 import java.util.*;public class test_two { public static int gbGame = 320; public static int gbGameT = 5; public static int mp3 = 260; public static int mp3T = 13; public static int people = 18; public static void showInfo(){ int total = gbGame*gbGameT + mp3*mp3T;//总价 float average = (float)total/people; System.out.printf("总价: %d,平均价是: %f\n",total,average); } public static void main(String[] args){ Scanner myScanner = new Scanner(System.in);//调用键盘输入 showInfo(); System.out.print("请输入游戏机价格: "); gbGame=myScanner.nextInt(); System.out.print("请输入MP3价格: "); mp3=myScanner.nextInt(); System.out.print("请输入游戏机数量: "); gbGameT=myScanner.nextInt(); System.out.print("请输入MP3数量: "); mp3T=myScanner.nextInt(); showInfo(); } }/*【结果】 总价: 4980,平均价是: 276.666656 请输入游戏机价格: 888 请输入MP3价格: 666 请输入游戏机数量: 1 请输入MP3数量: 1 总价: 1554,平均价是: 86.333336*/
/* 栗子 一个猴子摘了一筐桃子,当即吃了一半,可是桃子太好吃了,又多吃了一个,第二天它把剩下的桃子又吃了一半,又多吃了一个 就这样到第十天早上只剩下一个桃子了,问它共摘了多少桃子*/ import java.util.*; class Monkey{ //day哪天的桃子数,sday吃了多少天剩下一个 public static int peach(int day,int sday){ if(day == sday){ return 1; } else{ return (peach(day+1,sday)+1)*2; } } public static void scan(){ //建立输入的方法 int a = 1; System.out.println("请输入要吃几天: "); Scanner sr = new Scanner(System.in); int b = sr.nextInt(); if(a < b){ System.out.print(Monkey.peach(a,b)); } else{ System.out.println("不能小于等于1天"); Monkey.scan(); } } }public class test_two { public static void main(String[] args){ Monkey.scan(); } }
/* 栗子 计算1+2+3+......+20=? 按照用户输入的整数n做累加和:1+2+3+....+n*/ import java.util.*; public class test_two { public static void main(String[] args){ Scanner sr = new Scanner(System.in); System.out.print("请输入一个数N: "); int n = sr.nextInt(); int i = 0; for(int m = 0;m<n;m++){ i = i + (m + 1); System.out.println("m是: " + m); } System.out.println("1+2+3+......+n的值是:" + i); } }
/* 栗子 编写一个Cat类,要求如下: 该猫可以做四则运算,也可以做面积计算;将四则运算和面积运算合二为一,作为一个运算器,主菜单让用户选择是做四则运算还是面试计算。 分为两个子菜单,让用户选择加减乘除或者形状。*/ import java.util.*; class Cat{ //输入方法 public static void scan1(){ System.out.println("题目类型如下"); System.out.println("1. 四则运算"); System.out.println("2. 面积运算"); System.out.println("0. 退出程序"); System.out.print("请选择要做题的类型,请输入0-2:"); Scanner sr = new Scanner(System.in); int x = sr.nextInt(); switch(x){ case 0: System.out.println("谢谢使用,再见!"); break; case 1: Cat.szys(); break; case 2: Cat.mjys(); break; default: System.out.println("输入有误,请重新输入"); break; } Cat.scan1();//重复调用目录 } //四则运算方法 public static void szys(){ System.out.println("四则运算"); System.out.println("1. 加法运算"); System.out.println("2. 减法运算"); System.out.println("3. 乘法运算"); System.out.println("4. 除法运算"); System.out.println("0. 返回上级"); System.out.print("请选择要做题的类型,请输入0-4: "); Scanner sr = new Scanner(System.in); int y = sr.nextInt(); switch(y){ case 0: System.out.println("返回上级"); Cat.scan1(); break; case 1: System.out.println("进入加法运算,请输入第一个数: "); Scanner jf1 = new Scanner(System.in); int jf01 = jf1.nextInt(); System.out.println("进入加法运算,请输入第二个数: "); Scanner jf2 = new Scanner(System.in); int jf02 = jf2.nextInt(); float jfh = (float)jf01 + (float)jf02; System.out.println(jf01 + "+" + jf02 + "=" + jfh); System.out.println("已计算完成。 "); System.out.println("是否要继续使用?使用请输入1,返回请输入2,退出请输入任意数字:"); Scanner cz01 = new Scanner(System.in); int cz001 = cz01.nextInt(); if(cz001 == 1){ Cat.szys(); } else if(cz001 == 2){ Cat.scan1(); } else if(cz001 != 1 || cz001 != 2){ System.out.println("谢谢使用,再见!"); } break; case 2: System.out.println("进入减法运算,请输入第一个数: "); Scanner jjf1 = new Scanner(System.in); int jjf01 = jjf1.nextInt(); System.out.println("进入减法运算,请输入第二个数: "); Scanner jjf2 = new Scanner(System.in); int jjf02 = jjf2.nextInt(); float jjfh = (float)jjf01 + (float)jjf02; System.out.println(jjf01 + "-" + jjf02 + "=" + jjfh); System.out.println("已计算完成。"); System.out.println("是否要继续使用?使用请输入1,返回请输入2,退出请输入任意数字:"); Scanner cz02 = new Scanner(System.in); int cz002 = cz02.nextInt(); if(cz002 == 1){ Cat.szys(); } else if(cz002 == 2){ Cat.scan1(); } else if(cz002 != 1 || cz002 != 2){ System.out.println("谢谢使用,再见!"); } break; case 3: System.out.println("进入乘法运算,请输入第一个数: "); Scanner cff1 = new Scanner(System.in); int cff01 = cff1.nextInt(); System.out.println("进入乘法运算,请输入第二个数: "); Scanner cff2 = new Scanner(System.in); int cff02 = cff2.nextInt(); float cffh = (float)cff01 * (float)cff02; System.out.println(cff01 + "*" + cff02 + "=" + cffh); System.out.println("已计算完成。"); System.out.println("是否要继续使用?使用请输入1,返回请输入2,退出请输入任意数字:"); Scanner cz03 = new Scanner(System.in); int cz003 = cz03.nextInt(); if(cz003 == 1){ Cat.szys(); } else if(cz003 == 2){ Cat.scan1(); } else if (cz003 != 1 || cz003 != 2){ System.out.println("谢谢使用,再见!"); } break; case 4: System.out.println("进入除法运算,请输入第一个数: "); Scanner cf1 = new Scanner(System.in); int cf01 = cf1.nextInt(); System.out.println("进入除法运算,请输入第二个数: "); Scanner cf2 = new Scanner(System.in); int cf02 = cf2.nextInt(); float cfh = (float)cf01 / (float)cf02; System.out.println(cf01 + "/" + cf02 + "=" + cfh); System.out.println("已计算完成。"); System.out.println("是否要继续使用?使用请输入1,返回请输入2,退出请输入任意数字:"); Scanner cf03 = new Scanner(System.in); int cf003 = cf03.nextInt(); if(cf003 == 1){ Cat.szys(); } else if(cf003 == 2){ Cat.scan1(); } else if(cf003 != 1 || cf003 != 2){ System.out.println("谢谢使用,再见!"); } break; default: System.out.println("输入有误,请重新输入!"); break; } Cat.szys(); } //面积运算方法 public static void mjys() { System.out.println("面积运算"); System.out.println("1. 三角形面积计算"); System.out.println("2. 圆形面积计算"); System.out.println("3. 方形面积计算"); System.out.println("0. 返回上级"); System.out.print("请选择要做题的类型,请输入0-3: "); Scanner sr = new Scanner(System.in); int z = sr.nextInt(); switch (z) { case 0: System.out.println("返回上级"); Cat.scan1(); break; case 1: System.out.println("进入三角形面积计算,请输入底: "); Scanner sj1 = new Scanner(System.in); int sjx01 = sj1.nextInt(); System.out.println("进入三角形面积计算,请输入高: "); Scanner sj2 = new Scanner(System.in); int sjx02 = sj2.nextInt(); float sjxh = ((float) sjx01 * (float) sjx02) / 2; System.out.println("底" + sjx01 + "高" + sjx02 + "面积=" + sjxh); System.out.println("已计算完成。"); System.out.println("是否要继续使用?使用请输入1,返回请输入2,退出请输入任意数字:"); Scanner sj03 = new Scanner(System.in); int sj003 = sj03.nextInt(); if (sj003 == 1) { Cat.mjys(); } else if (sj003 == 2) { Cat.scan1(); } else if (sj003 != 1 || sj003 != 2) { System.out.println("谢谢使用,再见!"); } break; case 2: System.out.println("已进入圆形面积计算,请输入半径: "); Scanner y1 = new Scanner(System.in); int bj = y1.nextInt(); float ymjh = (float) bj * (float) bj * 3.1415926f; System.out.println("半径:" + bj + "面积:" + ymjh); System.out.println("已计算完成。"); System.out.println("是否要继续使用?使用请输入1,返回请输入2,退出请输入任意数字:"); Scanner y01 = new Scanner(System.in); int y001 = y01.nextInt(); if (y001 == 1) { Cat.mjys(); } else if (y001 == 2) { Cat.scan1(); } else if (y001 != 1 || y001 != 2) { System.out.println("谢谢使用,再见!"); } break; case 3: System.out.println("已进入方形面积计算,请输入长: "); Scanner c1 = new Scanner(System.in); int c01 = c1.nextInt(); System.out.println("已进入方形面积计算,请输入宽: "); Scanner k2 = new Scanner(System.in); int k02 = k2.nextInt(); float mjh = (float) c01 * (float) k02; System.out.println("长:" + c01 + "宽:" + k02 + "面积:" + mjh); System.out.println("已计算完成。"); System.out.println("是否要继续使用?使用请输入1,返回请输入2,退出请输入任意数字:"); Scanner m03 = new Scanner(System.in); int m003 = m03.nextInt(); if (m003 == 1) { Cat.mjys(); } else if (m003 == 2) { Cat.scan1(); } else if (m003 != 1 || m003 != 2) { System.out.println("谢谢使用,再见!"); } break; default: System.out.println("输入有误,请重新输入!"); break; } Cat.mjys(); } }public class test_two { public static void main(String[] args){ Cat.scan1(); } }
/* 栗子 采用面向对象思想涉及超级玛丽游戏人物。并能用键盘输入命令,来控制马里奥的位置*/ import java.util.*; class Maria{ int x,y; //构造方法,初始化场景;确定地图,Maria的位置 public Maria(){ System.out.println("I'm Maria \n" + "@"); } public void move(int i){ for(int k=1;k<=25;k++){ if(k == i){ System.out.printf("@"); } else{ System.out.printf("."); } } }}public class test_two { public static void main(String[] args){ Scanner sr = new Scanner(System.in); System.out.println("输入1-25的数字,你可以移动马里奥,输入其他数字退出。"); int i = sr.nextInt(); Maria m = new Maria(); while(true){ if(i<25) { m.move(i); i = sr.nextInt(); }else{ System.out.println("退出游戏!"); break; } } } }【结果】
输入1-25的数字,你可以移动马里奥,输入其他数字退出。
1
I'm Maria
@
@........................2
.@.......................3
..@......................4
...@.....................5
....@....................6
.....@...................8
.......@.................24
.......................@.25
退出游戏!
/* 栗子 与电脑猜拳。电脑每次随机生成三个数字,0代表石头、1代表见到、2代表布*/ import java.util.*;//猜拳游戏class Caiquan{ public static void caiquan(){ int a1=0,b1=0,c1=0; System.out.print("请输入想玩的盘数:"); Scanner p = new Scanner(System.in); int ps = p.nextInt(); for(int i=1;i<=ps;i++){ System.out.println("游戏一开始,请出拳!"); Scanner m = new Scanner(System.in); int a = m.nextInt();//玩家出拳 int b = new Random().nextInt(3);//电脑出拳 if(a == b){ a1++; System.out.println("打平!"); }else if((a-b)==-1 || (a-b)==2){ b1++; System.out.println("YOU Win!"); }else{ c1++; System.out.println("YOU LOSE"); } } System.out.println("平:" + a1 + "\n赢:" + b1 + "\n输:" + c1 + "\n一共玩了" + (a1+b1+c1) + "局"); }}//开始退出游戏类class Kais{ public static void jingcyx(){ System.out.println("是否开始猜拳游戏?按1开始,按0退出"); Scanner sr = new Scanner(System.in); int x = sr.nextInt(); switch(x){ case 0: System.out.println("已退出游戏!"); break; case 1: System.out.println("游戏说明:0代表石头,1代表见到,2代表布"); Caiquan.caiquan(); break; case 2: System.out.println("输入错误,请重新输入!"); Kais.jingcyx(); break; } } }public class test_two { public static void main(String[] args) { Kais.jingcyx(); } } 【结果】
是否开始猜拳游戏?按1开始,按0退出
1
游戏说明:0代表石头,1代表见到,2代表布
请输入想玩的盘数:2
游戏一开始,请出拳!
0
打平!
游戏一开始,请出拳!
0
打平!
平:2
赢:0
输:0
一共玩了2局
/* 栗子 输入出生日期,显示星座和出生星期几*/ import java.util.*;//星座类class Xinz{ public static int i = 0;//定义静态变量,i为统计调用人数计数器 //判断星座的方法 public void xinz(int month,int date){ i++; switch(month){ case 1:{ if(date>=20){ System.out.println("水瓶座"); }else{ System.out.println("摩羯座"); } break; } case 2:{ if(date>=19){ System.out.println("双鱼座"); }else{ System.out.println("水瓶座"); } break; } case 3:{ if(date>=21){ System.out.println("白羊座"); }else{ System.out.println("双鱼座"); } break; } case 4:{ if(date>=20){ System.out.println("金牛座"); }else{ System.out.println("白羊座"); } break; } case 5:{ if(date>=21){ System.out.println("双子座"); }else{ System.out.println("金牛座"); } break; } case 6: { if (date >= 21) { System.out.println("巨蟹座"); } else { System.out.println("双子座"); } break; } case 7:{ if(date>=23){ System.out.println("狮子座"); }else{ System.out.println("巨蟹座"); } break; } case 8:{ if(date>=20){ System.out.println("处女座"); }else{ System.out.println("狮子座"); } break; } case 9:{ if(date>=23){ System.out.println("天秤座"); }else{ System.out.println("处女座"); } break; } case 10:{ if(date>=23){ System.out.println("天蝎座"); } else{ System.out.println("天秤座"); } break; } case 11:{ if(date>=22){ System.out.println("射手座"); }else{ System.out.println("天蝎座"); } break; } case 12:{ if(date>=22){ System.out.println("摩羯座"); }else{ System.out.println("射手座"); } break; } } } //返回统计次数 public int getl(){ return i; }} //周几类class Rq{ public void rq(int year,int month,int date){ Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR,year); c.set(Calendar.MONDAY,month); c.set(Calendar.DATE,date); int week = c.get(Calendar.DAY_OF_WEEK); switch(week){ case 1: System.out.println("星期日"); break; case 2: System.out.println("星期一"); break; case 3: System.out.println("星期二"); break; case 4: System.out.println("星期三"); break; case 5: System.out.println("星期四"); break; case 6: System.out.println("星期五"); break; case 7: System.out.println("星期六"); break; } }} //程序开始类class Start{ public void st(){ System.out.println("年 月 日格式: 19XX XX XX\n请输入出生年月日: "); Scanner sr = new Scanner(System.in); int year = sr.nextInt(); int month = sr.nextInt(); int date = sr.nextInt(); Rq r = new Rq(); r.rq(year,month,date); Xinz xz = new Xinz(); xz.xinz(month,date); System.out.println("\n是否继续让巫师看星座? \n1、继续\t2、退出"); Scanner sr1 = new Scanner(System.in); int o = sr1.nextInt(); if(o == 1){ Start qd = new Start(); qd.st(); } else if(o != 1){ Xinz tc = new Xinz(); System.out.println("巫师为" + tc.getl() + "人看过星座"); System.out.println("退出星座查询,Goodbye!"); } }} public class test_two { public static void main(String[] args) { Start ks = new Start(); ks.st(); } }【结果】
年 月 日格式: 19XX XX XX
请输入出生年月日:
1989 10 01
星期三
天秤座
是否继续让巫师看星座?
1、继续 2、退出
1
年 月 日格式: 19XX XX XX
请输入出生年月日:
2008 01 01
星期五
摩羯座
是否继续让巫师看星座?
1、继续 2、退出
1
/* 栗子 投票选班长,有三个候选人(张三、李四、王五),通过编号投票,要求最后显示班长名*/ import java.util.*; class Xuanju{ //a : 投票人数 i1:一号候选人姓名 i2:二号候选人姓名 i3:三号候选人姓名 public void tp(int a,String i1,String i2,String i3){ int j1 = 0,j2 = 0,j3 = 0,qq = 0;//计票器 for(int i=1;i<=a;i++){ System.out.println("请投票,投票请按1,2,3:"); Scanner tp = new Scanner(System.in); int b = tp.nextInt(); System.out.println("已有" + i + "人投票"); switch(b){ case 1: j1++; break; case 2: j2 ++; break; case 3: j3++; break; default: qq++; break; } } if(j1>j2 && j1>j3){ System.out.println(i1 + "得" + j1 + "票\n" + i2 + "得" + j2 + "票\n" + i3 + "得" + j3 + "票\n" + "弃权票数" + qq); System.out.println("恭喜" + i1 + "当选班长!"); } else if(j1<j2 && j2>j3){ System.out.println(i1 + "得" + j1 + "票\n" + i2 + "得" + j2 + "票\n" + i3 + "得" + j3 + "票\n" + "弃权票数" + qq); System.out.println("恭喜" + i2 + "当选班长!"); } else if(j1<j3 && j2<j3){ System.out.println(i1 + "得" + j1 + "票\n" + i2 + "得" + j2 + "票\n" + i3 + "得" + j3 + "票\n" + "弃权票数" + qq); System.out.println("恭喜" + i3 + "当选班长!"); } else{ System.out.println(i1 + "得" + j1 + "票\n" + i2 + "得" + j2 + "票\n" + i3 + "得" + j3 + "票\n" + "弃权票数" + qq); System.out.println("有同等票数,投票无效请重新投票!"); } }} public class test_two { public static void main(String[] args) { //设定投票人数 System.out.print("设定投票人数: "); Scanner sr = new Scanner(System.in); int a = sr.nextInt(); System.out.print("请输入第一位候选人的名字: \n"); Scanner sr1 = new Scanner(System.in); String i1 = sr1.nextLine();//键盘接收字符串 System.out.print("请输入第二位候选人的名字: \n" ); Scanner sr2 = new Scanner(System.in); String i2 = sr2.nextLine(); System.out.print("请输入第三位候选人的名字: \n"); Scanner sr3 = new Scanner(System.in); String i3 = sr3.nextLine(); System.out.println("本次选举将有: " + a + "人参与!"); System.out.println("1号:" + i1 + "\t2号:" + i2 + "\t3号:" + i3); Xuanju tp = new Xuanju(); tp.tp(a,i1,i2,i3); } } 【结果】
设定投票人数: 3
请输入第一位候选人的名字:
wxue1
请输入第二位候选人的名字:
wxue2
请输入第三位候选人的名字:
wxue3
本次选举将有: 3人参与!
1号:wxue1 2号:wxue2 3号:wxue3
请投票,投票请按1,2,3:
1
已有1人投票
请投票,投票请按1,2,3:
1
已有2人投票
请投票,投票请按1,2,3:
1
已有3人投票
wxue1得3票
wxue2得0票
wxue3得0票
弃权票数0
恭喜wxue1当选班长!
/* 栗子 排序*/ import java.util.*; public class test_two { public static void main(String[] args) {/* //冒泡 10万个数需要15秒 int arr[] = {1,6,0,-1,9,-100,90}; int temp = 0; for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1;j++){ if(arr[j]>arr[j+1]){ //换位 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } //输出最后结果 for(int i = 0;i<arr.length;i++){ System.out.println(arr[i]+"\t"); }*/ /* 选择排序 10万个数需要7秒 第一次从R[0]-R[n-1]中选取最小值,与R[0]交换;第二次从R[1]-R[n-1]中选取最小值,与 R[1]交换;第三次从R[2]-R[n-1]中选取最小值,与R[2]交换.....,第i 次从R[i-1]-R[n-1]中选取最小值, 与R[i]交换.....第n-1次从R[n-2]-R[n-1]中选取最小值,与R[n-2]交换,总共n-1次。 */ /* int arr[] = {8,3,2,1,7,4,6,5}; int temp = 0; for(int j=0;j<arr.length-1;j++){ //认为第一个数就是最小的 int min=arr[j]; //记录最小数的下标 int minIndex = j; for(int k=j+1;k<arr.length;k++){ if(min>arr[k]){ min = arr[k]; minIndex = k; } } //当退出for循环就找到这次的最小数 temp = arr[j]; arr[j] = arr[minIndex]; arr[minIndex] = temp; } //输出最后的结果 for(int i=0;i<arr.length;i++){ System.out.println(arr[i] + "\t"); }*/ /* 插入式排序 10万数据用时2秒 把n个待排序的元素看成一个有序表和一个无序表,开始有序表只包含一个元素 ,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把他的排序码一次与有序表元素的排序码进行比较, 将它插入到有序表中的适当位置,使之成为新的有序表。 *//* int arr[] = {23,15,-13,62,5,-23,17}; for(int i=1;i<arr.length;i++){ int insertVal = arr[i]; //insertVal准备和前一个数比较 int index = i-1; while(index>=0&&insertVal<arr[index]){ //将arr[index]向后移动一位 arr[index+1] = arr[index]; index--; } //将insertVal插入到适当的位置 arr[index+1] = insertVal; } //输出最后结果 for(int i=0;i<arr.length;i++){ System.out.println(arr[i] + "\t"); }*/ } }
/* 栗子 做一个公司职员薪水管理系统,要求完成以下功能 1. 当有新员工是,将该员工加入到管理系统 2. 可以根据员工号,显示该员工的信息 3. 可以显示所有员工的薪水 4. 可以修改员工的薪水 5. 当员工离职是,将该员工从管理系统中删除 6.可以按照薪水从低到高顺序排序 7. 可以统计员工的平均工资和最低和最高工资*/ import java.util.*; //创建员工类class Emp{ //定义成员变量 工号 姓名 薪水 private String empNo; private String name; private float sal; //创建构造函数,初始化成员变量 public Emp(String empNo,String name,float sal){ this.empNo = empNo; this.name = name; this.sal = sal; } //使用set get 方法进行数据传递 public String getEmpNo() { return empNo; } public void setEmpNo(String empNo) { this.empNo = empNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getSal() { return sal; } public void setSal(float sal) { this.sal = sal; }}//创建员工管理类class EmpManage{ private ArrayList<Emp> al = null; //创建构造函数,初始化成员变量 public EmpManage(){ al = new ArrayList<Emp>(); } //加入员工 public void addEmp(Emp emp){ al.add(emp); } //根据员工工号显示员工的相关信息 public void showInfo(String empNo){ for(int i=0;i<al.size();i++){ Emp emp = (Emp)al.get(i); if(emp.getEmpNo().equals(empNo)){ System.out.println("找到该员工,她的信息是:"); System.out.println("工号:" + empNo + "\t姓名:" + emp.getName() + "\t薪水:" + emp.getSal()); } else{ System.out.println("工号不存在或无此人!!"); } } } //显示所有员工信息 public void AllInfo(){ for(int i=0;i<al.size()-1;i++){ for(int j=1;j<al.size()-i;j++){ Emp emp1 = (Emp)al.get(j-1); Emp emp2 = (Emp)al.get(j); if(emp1.getEmpNo().compareTo(emp2.getEmpNo())>0){ al.set(j,emp1); al.set(j-1,emp2); } } } for(Emp emp:al){ System.out.println("工号: " + emp.getEmpNo() + "\t姓名: " + emp.getName() + " \t工资: " + emp.getSal()); } } //修改员工的薪水 public void updateSal(String empNo,float newSal){ //遍历整个ArrayList for(int i=0;i<al.size();i++){ Emp emp = (Emp)al.get(i); if(emp.getEmpNo().equals(empNo)){ emp.setSal(newSal); System.out.println("已将" + emp.getName() + "调整为:" + newSal); return; } } System.out.println("工号不存在或无此人,无法进行相应操作!"); } //员工离职删除指定员工 public void delEmp(String empNo){ for(int i=0;i<al.size();i++){ Emp emp = (Emp)al.get(i); if(emp.getEmpNo().equals(empNo)){ al.remove(i); System.out.println("已将" + emp.getName() + "信息清除!"); } } } //按薪水高低排序 public void SortSal(){ for(int i=0;i<al.size()-1;i++){ for(int j=1;j<al.size()-i;j++){ Emp emp1 = (Emp)al.get(j-1); Emp emp2 = (Emp)al.get(j); if(emp1.getSal()<emp2.getSal()){ al.set(j,emp1); al.set(j-1,emp2); } } } for(Emp emp:al){ System.out.println("工号: " + emp.getEmpNo() + "\t姓名: " + emp.getName() + "\t工资: " + emp.getSal()); } } //计算平均工资并找出最高工资和最低工资的员工 public void Average(){ float sum = 0f,ave=0f; for(int k=0;k<al.size();k++){ Emp emp = (Emp)al.get(k); sum = emp.getSal() + sum; } ave = sum/al.size(); System.out.println("共有员工" + al.size() + "人\t总工资为: " + sum + "\t平均工资为: " + ave ); //找出最高工资与最低工资 for(int i=0;i<al.size()-1;i++){ for(int j=1;j<al.size()-i;j++){ Emp emp1 = (Emp)al.get(j-1); Emp emp2 = (Emp)al.get(j); if(emp1.getSal()<emp2.getSal()){ al.set(j,emp1); al.set(j-1,emp2); } } } for(int i=0;i<al.size();i++){ if(i == 0){ Emp emp = (Emp)al.get(i); System.out.println("工资最高的人员是: " + emp.getName() + "\t薪水是: " + emp.getSal()); }else if(i == al.size()-1){ Emp emp = (Emp)al.get(i); System.out.println("工资最低的人员是:" + emp.getName() + "\t薪水是: " + emp.getSal()); } } } }public class test_two { public static void main(String[] args) { EmpManage em = new EmpManage(); Scanner sr = new Scanner(System.in); //做出一个菜单 while(true){ System.out.println("公司职员薪水管理系统"); System.out.println("1. 录入新员工"); System.out.println("2. 根据工号查询信息"); System.out.println("3. 查询所有员工信息"); System.out.println("4. 通过工号修改员工薪水"); System.out.println("5. 删除员工信息"); System.out.println("6. 按薪水高低排序"); System.out.println("7. 计算平均工资及最高(低)工资"); System.out.println("0. 退出系统"); System.out.println("请输入对应的数字进行操作:"); int sel = sr.nextInt(); if(sel == 1){ System.out.println("请录入新员工的信息"); System.out.print("工号:"); String empNo = sr.next(); System.out.print("姓名: "); String name = sr.next(); System.out.print("工资: "); float sal = sr.nextFloat(); //构建emp对象 Emp emp = new Emp(empNo,name,sal); em.addEmp(emp); System.out.println("创建新员工" + name + "成功!"); }else if(sel == 2){ System.out.println("请录入员工工号: "); String empNo = sr.next(); em.showInfo(empNo); } else if(sel == 3){ System.out.println("公司所有员工信息如下: "); em.AllInfo(); } else if(sel == 4){ System.out.println("请输入人工号: "); String empNo = sr.next(); System.out.println("将工资修改为: "); float newSal = sr.nextFloat(); em.updateSal(empNo,newSal); } else if(sel == 5){ System.out.println("请输入要删除人员的工号: "); String empNo = sr.next(); em.delEmp(empNo); } else if(sel == 6){ System.out.println("已按薪资高低进行排序如下:"); em.SortSal(); } else if(sel == 7) { System.out.println("显示平均工资及最高、最低工资人员信息如下: "); em.Average(); } else if(sel == 0){ System.out.println("已正常退出!"); System.exit(0); } else{ System.out.println("输入错误,请重新输入!"); } } } }
转载于:https://www.cnblogs.com/suren2017/p/8404027.html
【Java】【控制流程】相关推荐
- 【Java基础】(六-上)java控制流程——顺序结构和分支结构
控制流程写一篇太长,就像之前第三篇一样,我回过头都不想看,所以分成了两篇,小巧精致,挺好. java控制流程 1. 控制流程是个什么东西? 2. 控制流程的分类 (1)顺序结构 (2)分支结构 一.i ...
- Java控制流程练习“黄金分割点”:寻找某两个整数相除,其结果离黄金分割点0.618最近 ,分母和分子不能同时为偶数,分母和分子 取值范围在[1-20]
寻找某两个整数相除,其结果 离黄金分割点 0.618最近 分母和分子不能同时为偶数 分母和分子 取值范围在[1-20] 代码: public class GoldenRatio {public sta ...
- 黑马 程序员——Java基础---流程控制
黑马程序员--Java基础---流程控制 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 一.概述 Java提供了两种基本的流程控制结构:分支结构 ...
- java 基本语法与流程控制_Java基础语法之控制流程
Java基础语法之控制流程 语言的流程控制提供了对程序步骤的基本方法. 三大流程控制语句:顺序.选择.循环 复合结构 复合结构是以一个区块为单位的,由"{"开始"}&qu ...
- java 示例_功能Java示例 第3部分–不要使用异常来控制流程
java 示例 这是称为" Functional Java by Example"的系列文章的第3部分. 我在本系列的每个部分中开发的示例是某种"提要处理程序" ...
- 功能Java示例 第3部分–不要使用异常来控制流程
这是称为" Functional Java by Example"的系列文章的第3部分. 我在本系列的每个部分中发展的示例是某种"提要处理程序",用于处理文档. ...
- 【Java从入门到头秃专栏 】(三) 控制流程 Math Date DateFormat Calendar System BigDecimal Random
目录 1 控制流程 2 Math类 3 Date类 4 DateFormat类 5 Calendar类(日历类) 6 System类 7 BigDecimal类 8 Random类(随机数) 1 控制 ...
- Java 1.3 控制流程(条件语句、循环结构)
Java与C/C++对比: Java 的控制流程结构与 C 和 C++ 的控制流程结构一样, 只有很少的例外情况. 没有 goto 语句, 但 break 语句可以带标签, 可以利用它实现从内层循环跳 ...
- 第三堂:Java程序流程控制
在程序设计时,我们常常需要改变程序的控制流程.语句的执行顺序.而我们有三种基本的技术可以改变这个流程:①调用方法,②选择,③循环. 流程控制是所有编程语言的基础部分,Java自然也不例外:Java的流 ...
- Java基础-控制流程-5. 中断控制流程语句
为什么80%的码农都做不了架构师?>>> Java设计者在语言中增加了一条带标签的break,以此来支持这种程序设计风格. 下面先来看看不带标签的break语句.与用于退出sw ...
最新文章
- 产品设计技术公开-一种扼杀对手的方式
- static,extern关键字作用?
- Linux Android 多点触摸协议 原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml
- 软件实施或技术支持技能必备提炼
- 你写的前端到底用没用到这些
- usr/bin/expect方式免密码登录和发送文件脚本
- SEO原创文章制作器
- linux 添加环境变量(php为例)
- mysql 8.0.25 取巧解决修改密码报错问题
- 基于图像处理技术的柑橘病害自动检测与分类
- 如何在单击按钮时启动新活动
- 博科:物理与虚拟网络的统一管理
- Cause: the class org.apache.tools.ant.taskdefs.optional.ANTLR was not found.
- 我不曾忘记的初心-屌丝逆袭
- 1月末支付机构备付金总量达1.4万亿,较去年12月下滑两千多亿
- HEVC AVS2 AV1
- 高通SM4350平台指纹移植流程
- 计算机登录界面没有用户显示不出来,win10不出现登录界面怎么办
- 8253可编程定时/计数器芯片
- JS正则表达式完整教程(略长)
热门文章
- 计算机专业同学综合自我评估,计算机专业学生的自我评价
- android dropbear 密码,root登录不进去 dropbear ssh
- 给一个数组,元素都是整数(有正数也有负数),寻找连续的元素相加之和为最大的序列(搜狐畅游2012.10.21机试题)...
- T-SQL语言中局部变量(@)和全局变量(@@)
- 【CNC——第4篇】初识交流伺服电机和伺服电机驱动器
- 国产图数据库--Nebula备份/恢复
- fastapi和php,Sanic vs Fastapi 性能对比
- hduOJ(2015-2018)
- pikachu Unsafe Fileupload 不安全的文件上传(皮卡丘漏洞平台通关系列)
- Opencv属性页配置,Realease和Debug通用(64和32)