JAVA基础 - 键盘录入与分支、循环结构案例
一、键盘录入
public static void main(String[] args) { //案例:键盘录入技术 //得到一个键盘扫描器对象 Scanner sc = new Scanner(System.in); System.out.println("请输入您的年龄:"); //调用sc对象的功能等待接收用户输入的数据 //这个代码会等待用户输入数据,直到用户输入完数据并按了回车键就会把数据拿到 int age = sc.nextInt(); System.out.println("您的年龄是:" + age); System.out.println("请输入您的名字"); String name = sc.next(); System.out.println("欢迎" + name); }
二、分支结构
1、if分支:根据判断的结果(真或假)决定执行某个分支的代码
public static void main(String[] args) { //分支结构,格式1:if(条件表达式){代码...} // 需求:心跳(60-100)之间是正常的,否则系统提示进一步检查 int hearBeat = 30; if (hearBeat < 60 || hearBeat > 100) { System.out.println("系统检测到您的心跳有异常,请进一步检查,当前心跳系数为:" + hearBeat); } System.out.println("检查结束");
//分支结构,格式2:if(条件表达式){代码...} else{代码... //需求:发红包,有钱就发,没钱就不发 double money = 1000.11; if (money>=1314){ System.out.println("您的红包已发送"); } else { System.out.println("没钱就别发了"); }
//分支结构,格式3:if(条件表达式){代码...} elseif(条件表达式){代码...} else{代码...} //需求:绩效系统 0-60 C 60-80 B 80-90 A 90-100 A+ int score = 160; if(score>=90&&score<=100){ System.out.println("您的绩效为:A+"); } else if(score>=80&&score<90){ System.out.println("您的绩效为A"); } else if(score>=60&&score<80){ System.out.println("您的绩效为B"); } else if(score>=0&&score<60){ System.out.println("您的绩效为C"); } else { System.out.println("您的输入的成绩不在0-100范围内"); } }
2、switch
if其实在功能上远远强大于switch,if适合做区间匹配,switch适合做 值匹配的分支选择、代码优雅
switch分支注意事项:
- 表达式类型只能是byte,short,int,char,jdk5开始支持枚举,jdk7开始支持string,不支持double,float,long
- case给出的值不允许重复,且只能是字面量,不能是变量
- 不要忘了写break,否则会出现穿透现象
public static void main(String[] args) { //switch(表达式){case值:执行代码} String week = "周二"; switch (week){ case "周一": System.out.println("一周的第一天"); break; case "周二": System.out.println("今天周二啦"); break; default: System.out.println("输入的不是周数据"); } }
3、switch的穿透性
如果代码执行到没有写break的case块,执行完后将直接进入下一个case块执行代码(而且不会进行任何匹配),直到遇到breask才跳出分支,这就是switch的穿透性
三、循环结构
1、for循环
public static void main(String[] args) { //for循环,for(初始化语句;循环条件;迭代语句){循环体语句} //需求1:计算1-5的和 int sum =0; for(int i=1;i<=5;i++){ sum += i; //把数据加给自己,用+=,即sum=sum+i } System.out.println("1-5的和是"+sum); //需求2:求1-10的奇数之和,并把求和结果在控制台输出 //分析:1、定义for循环使其能够依次访问到1-10的数; // 2、在for循环中,通过if筛选出奇数; // 3、在循环外定义一个整数变量sum来累加这些数据 int count =0; for(int i=1;i<10;i++){ if(i%2==1){ count +=i; } } System.out.println("1-10的奇数之和是"+count); //需求3:找出水仙花数并输出(1、水仙花数是一个三位数;2、水仙花数的个位、十位、百位的数字立方和等于原数) //分析:1、定义一个for循环从100一直到999 //2、每次访问到数据后,提取该数据的:个位、十位、百位数字 //3、使用if判断:个位、十位、百位的数字立方和是否等于原数,等于则输出该数据 count = 0;// 统计水仙花的个数 for(int i=100;i<=999;i++){ int ge = i % 10;//取余,比如157%10=15.7,取余即7 int shi = i / 10 % 10; //比如157/10=15,15%10=1.5,最后取余为5 int bai = i / 100;//比如157/100=1 (保留整数) if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i){ System.out.print(i+"\t");//"\t"是空格特殊字符,注意如果要让输出内容在同一行,要把print的ln去掉 //如果想知道水仙花数的个数,可以在循环外定义一个变量count用于记录水仙花数,每输出水仙花数时,让count++ count ++; } } System.out.println();//换行 System.out.println("水仙花的个数为"+count); }
2、while循环
使用规范:知道循环几次,使用for;不知道循环几次建议使用while
public static void main(String[] args) { //需求1:珠穆朗玛高度是8848860,纸张厚度是0.1,折叠纸张直到不低于珠穆朗玛位置,求折叠几次(不知道循环多少次的时候用while) //3、定义一个变量用于记录纸张折叠的次数 int countpeak = 0; //1、定义变量记录山峰的高度、纸张的百度 double peakHeight = 8848860;//山峰高度 double paperThickness = 0.1;//纸张厚度 //2、定义一个while循环控制纸张进行折叠 while (paperThickness<peakHeight){ paperThickness *= 2;//每折叠一次,纸张厚度为原来的2倍 countpeak ++; } System.out.println("折叠次数为"+countpeak); System.out.println("纸张最终的厚度"+paperThickness); }
3、do-while循环
先执行再判断循环条件
int i = 0; do{ System.out.println("hello"); i++; }while(i<3);
4、死循环、循环嵌套、break、continue
死循环:一直循环的执行下去,如果没有干预不会停止下来
嵌套循环:外部循环每循环一次,内部循环全部执行完一次。
跳转控制语句介绍:
- break:跳出并结束当前所在循环的执行(注意:只能用于结束所在循环,或者结束所在switch分支的执行)
- continue:用于跳出当前循环的当前执行,进入下一次循环。(注意:只能在循环中进行使用)
public static void main(String[] args) { //死循环需求:系统密码是520,请用户不断输入密码验证,验证不对输出密码错误,验证成功输出欢迎进入系统,并停止程序 int okPassword = 520;//定义正确的密码 Scanner scpa = new Scanner(System.in); while (true){ //定义死循环让用户不断输入密码 System.out.println("请您输入正确的密码:"); int password = scpa.nextInt(); if(password==okPassword){ System.out.println("登录成功了"); break; }else { System.out.println("密码错误"); } } //嵌套循环:5天,每天说3遍我要学习 for(int i=0;i<=5;i++){ for(int j=0;j<=3;j++){ System.out.println("我要学习"); } } }
四、案例技术
1、Random的使用
public static void main(String[] args) { //随机数类Random:生成0-10之间的随机数 Random r = new Random(); int data = r.nextInt(10);//0-9 不包含10(包前不包后) int number =r.nextInt(10)+1;//1-0,生成1-10之间的随机数 int number1 = r.nextInt(27)+65;//生成65-91之间的随机数,减加法: 65-91转换成 (0-26)+65 System.out.println("生成的随机数为:"+data); System.out.println("生成的随机数为:"+number); }
2、猜数字游戏
public static void main(String[] args) { //猜数字游戏 Random num = new Random(); int numdata = r.nextInt(100)+1;//随机生成一个数字1-100之间 (0-99)+1 Scanner numsc = new Scanner(System.in); while (true){ //使用一个死循环让用户不断的去猜测,并给出提示 System.out.println("请您输入猜测的数据(1-100):"); int guessNumber = numsc.nextInt(); if(guessNumber<numdata){ System.out.println("您猜测的过小了"); }else if(guessNumber>numdata){ System.out.println("您猜测的过大了"); }else { System.out.println("恭喜您猜中了"); break;//直接跳出并结束当前死循环 } } }