【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("输入错误,请重新输入!");
}

}





}

}
















 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 





















































































posted @ 2018-02-02 10:52  素人渔芙2017  阅读(206)  评论(0编辑  收藏  举报