接收用户指令(控制台可以输入数据,然后代码收到)
java中有工具类:
public static void main(String[] args) {
//java的工具类中 有Scanner类
Scanner input = new Scanner(System.in);
//用于接收 控制台输入的数据 类型 (输入类型 与 接收的类型不一致会报错)
int nextInt = input.nextInt(); //只能接收 int 类型
boolean nextBoolean = input.nextBoolean(); // 只能接收 boolean类型
//接收字符串 nextLine 接收一行数据
String next = input.next(); // 在输入数据以后 按回车 或者 空格 就是结束
String hasNextLine = input.nextLine(); //在输入数据以后 按回车 就是结束
//next 和 nextLine 不能一起使用
//next 输入 abc abe 结果是abc 因为终结的空格已经结束了
//nextLine 输入ABC ABC 结果是ABC ABC 它可以接收空格
}
程序的执行结构
顺序结构
按照语句出现的顺序执行。从上到下
分支结构
也就是选择结构,根据条件来选择执行哪一条
1、if条件语句
if(条件语句){…}
if(条件语句){…}else{…}
if(条件语句){…}else if(条件语句){…}
if(条件语句){…}else if(条件语句){…}else{…}
public static void main(String[] args) {
//java的工具类中 有Scanner类
Scanner input = new Scanner(System.in);
System.out.println("请输入数字:");
int a = input.nextInt();
if(a > 10) {
System.out.println("你输入的数字大于 10");
}else {
System.out.println("你输入的数字太小了");
}
}
2、switch语句
(break 跳出switch语句 ,如果上面的case值都不满足的话就执行default。 default 是可以选择不写)
表达式 是字符串的话 case后面的值就是字符串
switch(表达式){
case 值1: 语句块; break;
case 值2: 语句块; break;
case 值3: 语句块; break;
default: 语句块; break;
}
注意:break 是可以不写的,不写不会报错 但是他会不跳出switch 继续执行下一个 语句块然后从执行块 的break跳出,如果么有继续往下执行 直到遇到break 或者是 执行完下面所有的。
public static void main(String[] args) {
//java的工具类中 有Scanner类
Scanner input = new Scanner(System.in);
System.out.println("请输入数字:");
switch (input.nextInt()) {
case 2 : System.out.println("输入了2");
case 3 : System.out.println("输入了3"); break;
case 4 : System.out.println("输入了4"); break;
case 5 : System.out.println("输入了5"); break;
case 6 : System.out.println("输入了6"); break;
case 7 : System.out.println("输入了7"); break;
default: System.out.println("走了default"); break;
}
}
// 输入了2 结果是:输入了2 输入了3
循环结构
是一种重复结果。条件满足的时候一直执行,一直到条件不满足了就停止。
注意:循环结构 一定要有出口。
1、for循环
for(定义循环变量;判断循环条件;更新循环变量){
//循环体
}
public static void main(String[] args) {
for(System.out.println("定义循环变量");true;System.out.println("更新循环变量")) {
System.out.println("进入循环体");
}
}
2、while循环
while(条件表达式){ //发现条件表达式不满足就跳出 先判断后执行
//语句块
}
public static void main(String[] args) {
//定义一个i变量
int i = 0;
//循环条件 i< 8 就进入
while(i < 8){
//自增变量
i++;
System.out.println("循环第"+i+"次");
}
}
/* 循环第1次
循环第2次
循环第3次
循环第4次
循环第5次
循环第6次
循环第7次
循环第8次*/
3、do…while循环
do{
//语句块
}while(条件表达式) //先执行 再判断
public static void main(String[] args) {
//定义一个i变量
int i = 0;
do {
i++;
System.out.println("第"+i+"次");
}while(i < 1);//循环条件 i< 1 就执行下一次
}
// 输出 结果 : 第1次
循环嵌套 图形打印
*
***
*****
*******
//解决方案
// 外层循环控制行数: 4 行
// 内层循环控制列数:第一行循环 1个,第二行循环3个,第三行循环5个 ,第四行循环 7个
// 规律 i*2+1
public static void main(String[] args) {
for(int i = 0;i < 4; i++) {
for(int j = 0;j<i*2+1; j++) {
System.out.print("*");
}
System.out.println();//换行ln就是换行打印
}
}
---*
--***
-*****
*******
//解决方案
// 外层循环控制行数: 4 行
// 内层循环控制列数:
// 内层循环1控制'-'的列数 第一行循环3个,第二行循环2个 ,第三个循环1个 ,第四行循环0个
// 内层循环2控制'*'的列数 第一行循环1个,第二行循环3个 ,第三个循环5个 ,第四行循环7个
// 规律 内层循环1 :初始值j = i+1 条件 j<4 内层循环2 :i*2+1
public static void main(String[] args) {
for(int i = 0;i < 4; i++) {
//第一次打印 3个空格 也就是循环3次
for(int j = i+1;j<4; j++) {
System.out.print(" ");
}
//循环3次以后再打一个 *
for(int j = 0;j<i*2+1; j++) {
System.out.print("*");
}
System.out.println();//换行ln就是换行打印
}
}
---*
--***
-*****
*******
-*****
--***
---*
public static void main(String[] args) {
// 外层循环控制行数: 7 行
// 内层循环控制列数:
// 内层循环1控制'-'的列数 第一行循环3个,第二行循环2个 ,第三个循环1个 ,第四行循环0个
// 内层循环2控制'*'的列数 第一行循环1个,第二行循环3个 ,第三个循环5个 ,第四行循环7个
// 内层循环3控制'-'的列数 第一行循环1个,第二行循环2个 ,第三个循环3个
// 内层循环4控制'*'的列数 第一行循环5个,第二行循环3个 ,第三个循环1个
// 规律 内层循环1 :初始值j = i+1 条件 j<4 内层循环2 :i*2+1
// 内层循环3 :i-3 内层循环4 :7-i+(7-i-1)
for(int i = 0;i < 7; i++) {
if(i < 4) {
//第一次打印 3个空格 也就是循环3次
for(int j = i+1;j<4; j++) {
System.out.print(" ");
}
//循环3次以后再打一个 *
for(int j = 0;j<i*2+1; j++) {
System.out.print("*");
}
System.out.println();//换行ln就是换行打印
continue;
}
//第一次打印 1个空格 也就是循环1次
for(int j = 0;j<i-3; j++) {
System.out.print(" ");
}
//循环3次以后再打一个 * 4/5 5/3 6/1
for(int j = 0;j<7-i+(7-i-1); j++) {
System.out.print("*");
}
System.out.println();//换行ln就是换行打印
}
}
循环的退出
1、break:终止本轮所有次循环。直接退出循环。
public static void main(String[] args) {
for(int i = 0;i < 10 ; i++) {
System.out.println(i);
//i 等于4的时候 跳出循环
if(i == 4) {
break;
}
}
}
//输出的结果是 0 1 2 3 4
2、continue:终止本轮本次循环。也就是说本次循环continue后面的代码不执行,进行下一次循环的入口判断。
public static void main(String[] args) {
for(int i = 0;i < 10 ; i++) {
if(i == 4) {
//跳出本次循环 进行下一次循环
continue;
}
//本次循环是4 已经跳出 所以不打印
System.out.println(i);
}
}
//输出的结果是 0 1 2 3 5 6 7 8 9
如何退出多重循环
break : 跳出本层循环。
continue:跳出本次循环。(还会执行下一次哦)
/**
*解决多重循环的 退出 案例
*/
public static void main(String[] args) {
//给循环加别名 break 的时候直接 break 别名 他就退出了
H:for(int i = 0;i < 10 ; i++) {
for(int j = 0; j< 5 ; j++) {
//break掉了H 也就是 最外层的循环
if(i == 4 && j == 3) {
break H;
}
//输出的结果 到了i=4,j=3之前就停了
System.out.println("i="+i+",j="+j);
}
}
}
//平常的跳出
public static void main(String[] args) {
for(int i = 0;i < 10 ; i++) {
for(int j = 0; j< 5 ; j++) {
//只是break掉了i == 4 && j == 3 外层循环还没有停止
if(i == 4 && j == 3) {
break;
}
//输出的结果 只是没有了 i=4,j=3
System.out.println("i="+i+",j="+j);
}
}
}