流程控制
1.用户输入
1.1接收用户输入
Scanner sc =new Scanner(System.in(扫描用户输入));
.next+数据类型,接收用户的数据
Int a =sc.nextInt();数据类型必须相同
.next()和.nextLine()都是接收字符串
区别:
next()读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。
nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,它是可以得到带空格的字符串的.
1.2判断用户输入
在接受用户输入之前判断是否是你需要的类型
.hasNext+数据类型 返回值为Boolean
2. 执行结构
顺序结构是一种基本的控制结构,它按照语句出现的顺序执行操作
分支结构又被称为选择结构,根据条件成立与否来执行操作,
循环结构是一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。
2.1选择结构
2.1.1if条件语句
if条件结构是根据条件判断之后再做处理
2.1.2switch语句
switch(表达式)
{ case取值1:
语句块1;
break; c
ase取值n:
语句块n;
break;
default:
语句块n+1;
break; }
switch语句有关规则
表达式的返回值必须是下述几种类型之一:int,byte,char,short,String;
case子句中的取值必须是常量,且所有case子句中的取值应是不同的;
default子句是可选的; break语句用来在执行完一个case分支后使程序跳出switch语句块;如果case后面没有写break则直接往下面执行!
Case后面的执行体可写{}也可以不写{}
循环结构是一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。
2.2循环结构
2.2.1while循环
符合条件,循环继续执行;否则,循环退出
特点:先判断,再执行
语法:
while(条件表达式){ //语句块; }
使用while循环的步骤
1、分析循环条件和循环操作
2、套用while语法写出代码
3、检查循环是否能够退出
2.2.2do-while循环
先执行一遍循环操作,符 合条件,循环继续执行;否则,循环退出
特点:先执行,再判断
语法: do{ 循环操作 }while(条件表达式);
while循环和do-while循环的区别?
while:先判断条件,如果条件满足,再执行循环操作
dowhile:先执行一遍循环操作,然后再判读条件,如果条件满足,继续执行循环操作。
2.2.3for循环
语法: for(初始化参数;判断条件;更新循环变量){ 循环体; }
public class ForLoop {
public static void main(String [] args){
int result = 0;
for(int i=1; i<=100; i++) {
result += i;
}
System.out.println("result=" + result);
}
}
2.3退出多重循环示例
public static void main(String[] args) {
haha:for(int i=0;i<10;i++) {
for(int j=0;j<10;j++) {
System.out.println("i="+i+" , j="+j);
if(i==5 && j==5) {
break haha;
}
}
}
}
}
2.4break与continue语句
break是用于终止本轮所有次循环。即不执行本次循环中break后面的语句,直接跳出循环。
continue是用于终止本轮本次循环。即本次循环中continue后面的代码不执行,进行下一次循环的入口判断
2.5foreach循环
增强的for循环用来迭代数组或集合中的值
(数组和集合会在后续的文章中涉及)
示例:
public class TestDemo {
public static void main(String[] args) { Queue<String> queue = new LinkedList<String>(); queue.add("A");
int[] a ={1,2,3,5,3,6,5};
for (int b:a) {
System.out.println("b = " + b);
}
}
}
3.小练习
public class Demo1 {
//打印图形
*
**
***
****
*****
public static void main(String[] args) {
//外层循环控制的是 行数
for(int i = 0; i <= 4; i++) {
//内层循环控制的是列数
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
public class Demo2 {
//打印图形
*****
****
***
**
*
public static void main(String[] args) {
for (int i = 0; i <= 5; i++) {
for (int j = 5; j > i; j--) {
System.out.print("*");
}
System.out.println();
}
}
}
public class Demo3 {
// 打印图形
*
***
*****
*******
*********
***********
/*
分析图形
第一行1个*,前面5个空格
第二行3个*,前面4个空格
第三行5个*,前面3个空格
第四行7个*,前面2个空格
第五行9个*,前面1个空格
第6行11个*,前面0个空格
一共六行,外层循环0-5
每一行既有空格,又有*,所以需要2个内层循环控制
1. 每一行的空格依次减一,第一个内层循环,令内层循环的值等于外层循环,使其的值小于最大的空格数,从0开始递增。只有内层循环循环完毕,才继续执行外层循环
2. 每一行的*是每行的两倍加1,令第二个的层循环的起始值为0,令其小于每行的两倍加1,并且递增
*/
public static void main(String[] args) {
for (int i = 0; i < 6; i++) {
for (int j = i; j <5; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2*i+1; j++) {
System.out.print("*");
}
System.out.println();
}
}
}