键盘录入
步骤
1.导包—获取信息的位置
import java.util.Scanner;
2.找到Scanner
Scanner sc=new Scanner(System.in);
3.获取数据
int num=sc.nextInt();//获取整数
String s=sc.nextLine();//获取一行
流程控制语句
1.顺序结构
绝大部分代码从上往下由左往右依次编译执行
/*
顺序结构
*/
class JavaDemo{
public static void main(String[] args) {
System.out.println("欢迎来到英雄联盟!!!");
System.out.println("敌军还有30s到达战场");
System.out.println("全军出击");
System.out.println("FisrtBlood!!!");
System.out.println("Defeat!!!");
}
}
2.选择结构
if语句
(提供了三种格式的语句 范围)
if语句格式1(提供一个选项,可能有结果可能没结果)
if(判断条件){
语句体;
}
执行流程
首先进行判断,如果判断结果是true执行语句体,
语句体执行完毕if语句结束了。如果判断的结果是
false直接跳过if语句不执行
*/
class IfDemo1{
public static void main(String[] args) {
//衣服的价格
int price=1999;
//剩余的钱
int money=200;
//进行选择判断
//如果语句体只有一句话省略大括号不写
if(money>=price)
System.out.println("不差钱,买买买!!!");
//其他语句
System.out.println("家里失火了,回家。。。");
}
}
if语句格式2(提供一个选项返回一个结果)
if(判断条件){
语句体1;
}else{
语句体2;
}
执行流程
先去执行判断,如果判断结果为true执行语句体1,执行完语句体1if语句结束。
如果判断结果为false执行语句体2,执行完语句体2 if语句结束。
class IfDemo2{
public static void main(String[] args) {
//求两个整数最大值
int a=1;
int b=2;
//选择判断
if(a>b){
System.out.println(a);
}else{
System.out.println(b);
}
//求三个整数最大值
int a=1;
int b=5;
int c=2;
//选择判断
//if嵌套
if(a>b){
//进入这个判断说明a比b大
if(a>c){
System.out.println(a);
}else{
System.out.println(c);
}
}else{
//进入这个判断说明b比a大
if(b>c){
System.out.println(b);
}else{
System.out.println(c);
}
}
}
}
当if语句格式2有返回值时和三目等效转换
if语句格式3(提供多个选择只有一个返回结果)
if(判断条件1){
语句体1;
}else if(判断条件2){
语句体2;
}
....
else{
语句体n+1;
}
import java.util.Scanner;
class IfDemo3{
public static void main(String[] args) {
//提供输入召唤师的星星数返回对应的段位
//获取星星数据
Scanner sc=new Scanner(System.in);
int xing=sc.nextInt();
//选择判断---返回对应的段位
if(xing>=0&&xing<=3){
System.out.println("倔强青铜");
}else if(xing>3&&xing<=10){
System.out.println("不屈白银");
}else if(xing>10&&xing<=20){
System.out.println("荣耀黄金");
}else if(xing>=20&&xing<30){
System.out.println("华贵铂金");
}else if(xing>=30&&xing<90){
System.out.println("超凡大师");
}else if(xing>=90){
System.out.println("嘴强王者");
}else{//统一处理非正常数据
System.out.println("亲,您输入数据有误!!!");
}
}
}
**执行流程**
执行判断条件1,如果是true执行语句体1执行
完毕if语句结束了。如果是false执行判断条件2
,如果是true执行语句体2执行完毕if语句结束了。如果是false按照上述操作继续往下执行直到所有的判断条件都是false执行else里的语句体n+1执行完毕if语句结束了。
测试数据:1.正确数据 2.边界数据 3.错误数据
switch语句(列举值)
**switch语句**
**格式**
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
...
default:
语句体n+1;
break;
}
执行流程
先去计算出表达式的值,和每个case值进行
比较,如果有相等的执行对应的语句体执行
break语句结束。如果没有相等的执行default里的语句体执行break语句结束。
注意:
1.case值是常量且不能重复
2.表达式值类型支持---byte、short、char、int,从jdk1.5开始支持枚举类型,从jdk1.7开始支持String类型
3.支持省略break,产生case穿透效果(输入月份返回对应的季节)
4.支持省略default(选择题)
5.结束条件(1.遇见break 2.执行到代码的最后)
import java.util.Scanner;
class SwitchDemo{
public static void main(String[] args) {
//输入整数返回对应的星期
//获取整数
Scanner sc=new Scanner(System.in);
int week=sc.nextInt();
//选择匹配
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;
default:
System.out.println("亲,您输入有误!!!");
break;
}
}
}
/*
选择题
题干
选项
算分
*/
import java.util.Scanner;
class SwitchText{
public static void main(String[] args) {
//题干
System.out.println("从下列选项中选择出你最喜爱的人?");
//选项
System.out.println("A 苍老师");
System.out.println("B 罗志祥");
System.out.println("C PDD");
System.out.println("D 古力娜扎");
//录入输入的选项
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
//选择
switch(s){
case "A":
System.out.println("选择错误!!扣10分");
break;
case "B":
System.out.println("选择错误!!扣60分");
break;
case "C":
System.out.println("选择正确!!加1分");
break;
case "D":
System.out.println("选择错误!!扣1分");
break;
}
}
3.循环结构
for循环 while循环 dowhile循环
for循环
for循环(循环范围确定)
格式
for(初始值;判断条件;控制条件){
循环体;
}
执行流程
先去计算出初始值,拿着初始值和判断条件进行比较如果
为true执行循环体,执行控制条件改变初始值拿着改变的初始值和判断条件进
行比较如果为true重复上述操作直到判断条件的结果值为false则循环结束。
class ForDemo{
public static void main(String[] args) {
//打印10遍helloworld
for(int i=1;i<=10;i++){
System.out.println("helloworld");
}
}
}
案例:
/*
1、请在控制台输出数据1-10
2、求出1-10之间数据之和
0+1=1
1+2=3
3+3=6
6+4=10
10+5=15
3、求出1-100之间偶数和
4、在控制台输出所有的”水仙花数”
三位数、abc=a*a*a+b*b*b+c*c*c;
恒久不变的规律---任意位整数%10结果是个位数 3645%10
c=abc%10
b=abc/10%10
a=abc/100
5、统计”水仙花数”共有多少个
/*
1、请在控制台输出数据1-10
2、求出1-10之间数据之和
0+1=1
1+2=3
3+3=6
6+4=10
10+5=15
3、求出1-100之间偶数和
4、在控制台输出所有的”水仙花数”
三位数、abc=a*a*a+b*b*b+c*c*c;
恒久不变的规律---任意位整数%10结果是个位数 3645%10
c=abc%10
b=abc/10%10
a=abc/100
5、统计”水仙花数”共有多少个
*/
class ForText{
public static void main(String[] args) {
//1、请在控制台输出数据1-10
/*for(int i=1;i<=10;i++){
System.out.println(i);
}*/
//2、求出1-10之间数据之和
//求和变量
/*int sum=0;
for(int i=1;i<=10;i++){
sum+=i;
}
System.out.println(sum);*/
//3、求出1-100之间偶数和
//求和变量
//int sum=0;
/*for(int i=1;i<=100;i++){
//判断是否是偶数
if((i&1)==0){
//进了判断都是偶数
sum+=i;
}
}*/
/*for(int i=2;i<=100;i+=2){//所有偶数
sum+=i;
}
System.out.println(sum);*/
//4、在控制台输出所有的”水仙花数”
//5、统计”水仙花数”共有多少个
//统计变量
int count=0;
for(int i=100;i<1000;i++){//所有的三位数
//获取每次三位数的每位数
int ge=i%10;
int shi=i/10%10;
int bai=i/100;
//判断
if(i==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
//System.out.println(i);
count++;
}
}
System.out.println(count);
}
}
while循环
while循环(循环范围不确定)
格式
初始值
while(判断条件){
循环体;
控制条件;
}
执行流程
先去计算出初始值,拿着初始值和判断条件进行比较如果
为true执行循环体,执行控制条件改变初始值拿着改变的初始值和判断条件进行比较如果为true重复上述操作直到判断条件的结果值为false则循环结束。
class WhileDemo{
public static void main(String[] args) {
//首付
int price=20000*30;
//存的钱
int leftMoney=0;//初始值
//统计数
int count=0;
//循环
while(leftMoney<price){
//每月存钱
leftMoney+=5500;//控制条件
//
count++;
}
//
System.out.println(count*1.0/12);
}
}
dowhile
dowhile循环(最少执行一次)
格式
初始值
do{
循环体;
控制条件;
}while(判断条件);
执行流程
先去计算出初始值,执行循环体,执行控制
条件,拿着改变初始值和判断条件进行比较
如果为true执行循环体执行控制条件拿着改变
的初始值和判断条件进行比较如果为true重复
执行上述操作直到判断结果为false循环结束。
class DoWhileDemo{
public static void main(String[] args) {
//打印10遍Helloworld
int i=1;//初始值
do{
System.out.println("Helloworld");//循环体
i++;//控制条件
}while(i<=10);
}
}
三种循环的区别和联系
1.循环范围确定推荐for循环,循环范围不确定推荐while循环,最少执行一次推荐dowhile
循环
2.三种循环可以等价转换
3.三种循环都可能出现死循环
4.for循环初始值后面不能使用