键盘录入
步骤:
1、导包----获取信息的位置
2、找到Scanner
3、获取数据
/**
* 键盘录入
* @author tarena
*
*/
public class JavaDemo1 {
public static void main(String[] args) {
//找到Scanner
Scanner sc = new Scanner(System.in);
//获取数据
//int num = sc.nextInt();//获取整数
String s = sc.nextLine();//获取一行
System.out.println(s);
}
}
流程控制语句
顺序结构
绝大部分代码从上往下由左往右一次编译和执行
选择结构
if语句[范围选择](提供三种格式语句)
1、if语句
if语句格式(提供一个选项,可能有结果,可能没结果)
if (判断条件) {
语句体
}
执行流程
首先进行判断,如果判断结果是true,就执行语句体,语句体执行完毕if语句就结束了, 如果判断结果是false,直接跳过if语句
public class XuanZeIf {
public static void main(String[] args) {
//衣服价格
int price = 1999;
//剩余的钱
int money = 200;
//进行选择判断
//如果语句体只有一句话,就可以省略大括号不写
if(money >= price){
System.out.println("买买买!!!");
}
//其他语句
System.out.println("家里失火了,回家。。。。。。");
}
}
2、if···else语句
格式
if (condition) {
语句体1
} else {
语句体2
}
执行流程
先去执行判断,如果判断结果为true执行语句体1,执行完语句体1, if语句结束,如果判断结果为false执行语句体2,执行完语句体2,if语句结束
当if语句格式2有返回值时和三目等效转换
public class XuanZeIf1 {
public static void main(String[] args) {
//求两个整数的最大值
int a = 1;
int b = 2;
int c = 3;
if (a>b) {
System.out.println(a);
} else {
System.out.println(b);
}
//求三个整数最大值
if (a>b) {
if (a>c) {
System.out.println(a);
} else {
System.out.println(c);
}
}else{
if (b>c) {
System.out.println(b);
} else {
System.out.println(c);
}
}
}
}
3、else···if(提供多个选择 只有一个返回结果)
格式
if(判断条件){
语句体1;
}else if(判断条件){
语句体2
}…
.
}else{
语句体n+1
}
执行流程:
执行判断条件1,如果为true执行语句体1执行完结束if语句,如果是false执行判断条件2,如果是true则结束if语句, 如果是false循环上述步骤知道所有判断条件都为false, 则执行else中的语句体,结束if语句
数据测试:1、正确数据 2、边界数据 3、错误数据
public class XuanZeIf2 {
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 <= 50) {
System.out.println("永恒钻石");
}else if (xing > 50 && xing <= 90) {
System.out.println("星耀");
}else if (xing > 90 && xing <= 150) {
System.out.println("荣耀王者");
}else if(xing >= 150 ){
System.out.println("嘴强王者");
}else{//统一非正常数据
System.out.println("亲!您输入的数据有误");
}
}
}
switch语句[列举值再选择]
格式
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体3;
break;
······
default:
语句体n+1;
break;
}
执行流程
先计算出表达式的值,和每个case的值进行比较, 如果有相等的执行对应的语句体执行break语句结束, 如果没有相等的执行default里的语句体执行break语句结束
注意:
1、case的值时有且不能重复的
2、表达式的值类型支持byte,shaort.char,int ,从jdk1.5开始支持枚举类型,从jdk1.7开始支持string类型
3、支持省略break。产生case穿透效果,(输入月份返回对应季节)
4、支持省略default(选择题)
5、结束条件(1、遇见break 2、执行到代码最后一行自行结束)
public class Switch {
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;
}
}
}
switch选择题
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("选择错误!!扣20分");
break;
case "C":
System.out.println("Congratulations!");
break;
case "D":
System.out.println("选择错误!!扣20分");
break;
}
}
}
循环结构
for循环
for循环(循环范围确定)
格式:
for(初始值;判断条件;控制条件){
循环体;
}
执行流程
先去计算出初始值,拿着初始值和判断条件进行比较,如果结果为true,执行循环体,执行控制条件,改变初始值拿着改变的初始值和判断条件进,如果为false,则直接跳出循环
//示例代码1
public class ForDemo1 {
public static void main(String[] args) {
// 打印10遍helloworld
for (int i = 1; i <= 10; i++) {
System.out.println("helloworld");
}
}
}
for循环简单练习
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~10偶数和
方法1
int sum = 0;
for (int i = 1; i <= 100; i++) {
if((i&1) == 0){
sum += i;
}
}
System.out.println(sum);
方法二
for(int i=2;i<=100;i+=2){
sum += i;
}
System.out.println(sum);
//3、输出水仙花数
规律:任意位数%10 个位
任意数/10%10 十位
任意数/100 百位
int a,b,c,j=0;
for (int i = 100; i < 1000; i++) {
a = i /100 %10;//个位
b = i / 10 %10;//十位
c = i % 10;//百位
if ((a*a*a+b*b*b+c*c*c) == i) {
System.out.println(i);
j++;
}
}
//4、统计水仙花数的个数
System.out.println("共有"+j+"个水仙花数");
}
while循环(循环范围不确定)
格式
初始值
while(判断条件){
循环体;
控制条件;
}
执行过程:
先去计算出初始值,拿着初始值和判断条件进行比较,如果结果为true,执行循环体,执行控制条件,改变初始值拿着改变的初始值和判断条件进行比较,如果为true就重复上述操作,直到判断条件结果值为false,如果为false,则直接跳出循环
public class WhileDemo1 {
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循环(最少执行一次)
格式
初始值
do{
循环体;
控制条件;
}while(判断条件);
执行流程
先去计算初始值,执行循环体,执行控制条件,拿着改变的初始值和判断条件进行比较,如果为true执行循环体执行控制条件,拿着改变的初始值和判断条件进行比较,如果为true,重复执行上述操作直到判断结果为false循环结束
public class DoWhileDemo {
public static void main(String[] args) {
// 打印10遍helloworld
int i = 1;
do{
System.out.println("HelloWorld");
i++;
}while(i <= 10);
}
}
循环练习
1、用“*”打印矩形
/**
* 打印如下图形
*
* *****
* *****
* *****
* *****
* *****
* @author tarena
*
*/
public class Demo {
public static void main(String[] args) {
//打印两颗星
//ln----换行
//System.out.print("*");
//System.out.print("*");
//打印一行星星
//for (int i = 1; i <= 5; i++) {
// System.out.print("*");
//}
//换行
//System.out.println();
//循环嵌套
for(int i = 1;i <= 5;i++){//外层循环----行数
for (int j = 1; j <= 5; j++) {//内层循环----列数
System.out.print("*");
}
System.out.println();
}
}
}
2、打印九九乘法表
/**
* 打印九九乘法表
* @author tarena
*
*/
public class Demo1 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {//行数
for (int j = 1; j <= i; j++) {//列
System.out.print(j + "*" + i+ "=" + (i*j) + "\t");
}
//换行
System.out.println();
}
}
}
三种循环的区别和联系
循环范围确定推荐for循环,如果循环范围不确定推荐while循环,最少执行一次推荐dowhile循环
三种循环可以等价转换
三种循环----死循环
for循环初始值后面不能使用