一,循环结构简介
1,什么是循环?--重复做且有一定规律的事情
2, 生活中什么事情像循环?
a ,体育课罚跑10圈
b , 切菜切一根黄瓜
3 , 循环的流程是怎么样的,可以通过流程图来绘制。
4,循环执行的次数和补偿有关,列如黄花切厚一点,切的次数就少一点
5,没有退出条件的循环是死循环,永远不会结束要 避免
二,while循环
1,循环组成部分:
a ,循环变量,用于计数,或者判循环的状态
b , 循环体,即循环执行的操作,通常用于大括号包裹
c , 改变循环变量的值,列如i++
d , 条件,判断循环是否继续
2,while循环的特点:
a , 先判断,后执行
b , 如果第一次判断条件就不成立,则一次都不执行,直接跳出循环
**3,掌握while循环结构**
// 1.初始化循环变量
xxxxx
// 2.循环条件
while(条件表达式){
// 3.循环操作(循环体)
// 4.更新循环变量(循环出口)
}
public class Demo3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
/*
* 循环条件:不合格
* 循环操作:执行学习任务
*/
// 1.循环的初始值
String pass = "n";
// 2.循环条件
// 如果是基本数据类型比较 可以使用== 但是字符串是个引用数据类型 比较内容相等时 必须使用equals()
while(pass.equals("n")) {
// 3.循环操作
System.out.println("上午阅读教材,学习理论部分");
System.out.println("下午上机编程,掌握代码部分");
// 4.循环出口
System.out.print("老师,他合格了吗?(y/n):");
pass = input.next();
}
System.out.println("恭喜合格!");
}
}
三,调试程序
1,程序编写的过程中可能出错,一般叫bug
2,解决错误的过程叫debug
3,解决错误的方法:
a , 目测代码哪里有错
b , 查看报错信息
c , 调试程序,即一点点一步步来执行,仔细检查程序哪里不对
4 ,return结束程序 结束当前的方法,返回到方法的调用者处。
5 ,break中断:switch中见过 可以结束掉某个case
表示终止循环,但是如果是出现在内层循环中,它只是结束了当前循环,外层的没有影响。
for(int i = 0 ;i < 10; i++){
for(int j = 0; j < 10; j++){
syso("*");
if(j == 3){
break;
}
}
}
6 ,continue 继续:表示结束掉本次循环,进入下一次循环。
4,调试的过程:
a , 在可能出bug的地方前面几行代码设置断点(breakpoint)
b , 然后调试执行
c , 单步执行f6快捷键
d , 在查看窗口查看变量值的改变
e , 找到bug,修改程序, 删除断点,关闭调试窗口结束调试
3. 掌握程序的调试(debug)(你的谋生技能)
断点调试:因为程序执行很快,一晃而过 所以我需要让它在我需要查看的位置停下来慢慢执行。
**断点调试步骤:**
(未来更多的使用步骤 请见上课老师)
-
打断点 break point(双击左侧的竖栏 注意:是在方法中非注释的位置打 )
-
以debug as运行 (当运行到断点处时,程序会中断,在断点处等待你调试)
这一行被选中的代码,它处于将要执行,还未执行的状态。
此种执行方法 会触发切换debug视图对话框
-
按F6或者按Step over键 可以执行当前暂停的这一行代码
如果想看一些判断的结果,可以选中你想判断的地方,然后右键->inspect查看
-
在一行一行执行的过程中,可以随时在debug视图查看变量表 监测变量的变化,或者直接鼠标放在变量上,查看变量的值。
-
在查看代码执行过程中,如果有些代码已经清楚执行结果之后,想看关键点,那么可以直接点击F8或者Resume按钮,快速放行掉非断点代码内容。(它会直接来到下一次的断点位置 中间直接快速执行了)
四,do—while循环
1,while循环时间先判断,后执行,但有时候不是我们需要先执行,根据结果在判断
2,先执行后判断的就是do--while循环
do{
// 循环操作
}while(循环条件);
3,常见错误:
a , 循环变量的值为初始化
b , while后面的分号是必须的
4 , while循环和do--while循环的异同
a , 相同点:都是循环,都可以完成循环操作
b , 语法不同
c , 执行顺序不同,while 先判断在执行,do--while 是先执行后判断
d , 循环次数可能不同。while 有可能一次都不执行,do--while至少执行一次
五,for循环的使用
1,对于固定次数的循环,使用for循环更加简洁明了
2,for 循环语法
for(初始化; 条件判断;修改循环变量值){
循环体
}
3,可能未来我们会使用到死循环
// 死循环
/*for(;;) {
System.out.println("xxxxxxxxxxxxx");
}*/
while(true) {
System.out.println("xxx");
}
,4,通过调试执行,一步步看循环的执行流程,注意吧for括号里面的内容折行
六,for循环的注意事项
1,初始化部分有且执行执行一次,最先执行
2,i++用于修改循环变量值,步长可以改变,列如:i+=3
3,在for循环中声明的变量不能在循环外部使用
4,循环结束后,循环变量的值到底是多少?
5,循环条件i<6和i<=6有区别吗
6,for循环括号里面的三个部分都可以省略不写,但是分号不能省略
7,eclipse中快捷键和快捷键输入的使用
a , 默认快捷键是alt+/
b , syso
c , main
如何正确的用for循环来遍历数组。
我们先看一下for循环的定义。
for( 初始语句 ; 执行条件 ; 增量 )
{
循环体
}
执行顺序:1、初始语句 2、执行条件是否符合? 3、循环体 4、增加增量
初始化语句只在循环开始前执行一次,每次执行循环体时要先判断是否符合条件,如果循环条件还为true,则执行循环体,再执行迭代语句。对于for循环,循环条件总比循环体多执行一次。
明白了for循环的定义后,我们可以很好的来写for循环如何遍历数组了。
针对上面的代码我们应该修改如下:
for(int i=0;i<examPart.length;i++) {
if (examPart[i]==0) then continue;
循环体
}
更简洁一下可以修改如下:
for (int i : examPart) {
if (i==0) then continue;
循环体
}
Java for循环遍历数组
int[]a=new int[]{1,2,5,77};
for(int value:a){
System.out.println(value);
}
七,跳转语句break的使用
1,break语句可以用在for,while ,do--while中
2,break语句
a , 用于终止某个循环,使程序到循环体外的下一个语句
b , 在循环中位于break厚度语句将不再执行,循环也停止执行
c , 通常与if语句联用
八,跳转语句continue的使用
1,continue语句可以用在for, while ,do--while
2, continue语句
a , 跳过本次循环,继续执行下一次循环
b , 通常与if 语句连用
九. 掌握Java二重循环(多重/嵌套)
注意:
1.二重循环其实就是嵌套循环,在一个循环里面又嵌套了一个循环
2.外层循环控制行 内层循环控制列(每行打印的内容)
3.外层循环执行一次 内层循环执行一遍 ,整体循环执行的总次数,是外层循环的次数乘以内层循环的次数
4.一般多重循环值的就是二重循环
十.增强for循环
遍历集合或数组是平时操作很常用的,之前也没有真正的总结过,如今整理了一下,加上以往使用上的借鉴整理如下,如有写的不完善的地方请指正,谢谢!
整体来说:
增强型for循环使用起来比较方便,代码也比较简单,如果只是操作集合中元素的而不使用索引的话,建议用此方法。
对于普通for循环,如果需要使用索引进行其它操作的话,建议用这个。
详细来说:
1,区别:
增强for循环必须有被遍历的目标(如集合或数组)。
普通for循环遍历数组的时候需要索引。
增强for循环不能获取下标,所以遍历数组时最好使用普通for循环。
2,特点:
书写简洁。
对集合进行遍历,只能获取集合元素,不能对集合进行操作,类似迭代器的简写形式,但是迭代器可以对元素进行remove操作(ListIterator可以进行增删改查的操作)。
3,格式:
for(数据类型变量名 :被遍历的集合(collection)或者数组) {
执行语句
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ForTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
/* 1.普通数组中的使用 */
int array[] = { 1,2,3,4,5,6,7,8,9};
// 增强for循环
for (int item : array) {
System.out.println(item);
}
// 普通for循环
for (int i = 0; i < array.length; i++)
System.out.println(array[i]);
/* 2.二维数组中的使用 */
int array2[][] = {{1,2,3}, {4,5,6}, {7,8,9} };
// 增强for循环
for (int arr[] : array2) {
for (int item : arr) {
System.out.println(item);
}
}
// 普通for循环
for (int i = 0; i < array2.length; i++) {
for (int j = 0; j < array2[i].length; j++) {
System.out.println(array2[i][j]);
}
}
/* 3.List中的使用 */
List<String> list = new ArrayList<String>();
list.add("我");
list.add("爱");
list.add("中");
list.add("国");
// 增强for循环
for (String item : list){
System.out.println(item);
}
//普通for循环
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//迭代器遍历
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
}
}