多重循环和程序调试
目标:
1:掌握Java二重循环(2层嵌套的循环)
2:使用跳转语句控制程序流程
- break
- continue
3:掌握程序调试(debug)
Java二重循环
需求:打印一些图形
标准方法:外层循环控制打印多少行,内层循环控制每一行的内容
思路:
1:先看图形每一行在干什么,能不能一个循环搞定
2:每一行对象能搞定后,看能不能搞定n行。
图形一:
/* 打印下面的图形
*****
*****
*****
*****
*/
public class Demo1 {
public static void main(String[] args){
// 输出行数
for(int i = 1 ; i<= 4;i++){
// 输出每一行的内容
for(int j = 1;j<= 5;j++) {
System.out.print("*");
}
// 换行
System.out.println();
}
}
}
图形二:
/* 打印下面的图形
*
***
*****
*******
*********
*/
public class Demo2 {
public static void main(String[] args) {
// 输出行数
for(int i = 1;i<=5;i++) {
// 输出每一行的内容
for(int j = 1;j<= (2*i-1);j++) {
System.out.print("*");
}
System.out.println();
}
}
}
图形三
/* 打印下面的图形
*
***
*****
*******
*/
public class Demo3 {
public static void main(String[] args) {
// 输出行数
for(int i = 1;i<= 4;i++) {
// 输出每一行的内容
// 输出空格
for(int k =4;k>i;k--) {
System.out.print(" ");
}
// 输出*
for(int j=1;j<=2*i-1;j++) {
System.out.print("*");
}
// 换行
System.out.println();
}
}
}
打印9x9乘法表
// 乘法口诀表正序
public class Demo4 {
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+" ");
}
// 换行
System.out.println();
}
}
}
多重循环的语法:
多重循环指的就是循环嵌套,但是一般嵌套的循环也就2层,所以多重循环又被成为二重循环。
你能想到的循环结构都可以随意嵌套
多重循环:最外层的被成为外层循环,嵌套的循环被成为内层循环。
外层循环执行一次,内层循环会执行一遍。
while(){
while(){
}
}
while(){
do{
}while();
}
for(){
while(){
}
do{
}while();
}
跳转语句控制程序流程
死循环:无法结束的循环
while(true){
}
do{
}while(ture);
for(;;){
}
break( 中断 )
- 在循环中表示结束循环(多重循环中只会结束当前循环)
- 在switch中表示终止判断
//需求:录入5名学生的成绩,并计算大于80分的人数
//导入Scanner
import java.util.Scanner;
public class Demo5 {
public static void main(String[] args) {
// 创建对象
Scanner input = new Scanner(System.in);
// 创建个数的变量
int num = 0;
// 逐个输入成绩
for(int i = 1; i <= 5; i++) {
System.out.print("请输入第"+i+"名学生成绩:");
double score = input.nextDouble();
// 创建循环
if(score < 0 || score > 100) {
System.out.println("输入错误!");
// 结束当前循环
break;
}else if(score > 80) {
num ++;
}
}
System.out.println("大于80分的学生数量为:"+num);
}
}
continue(继续)
equals:比较字符串的内容是否相同
// 输入用户名和密码,正确则登录成功,失败则重试
// 导入Scanner
import java.util.Scanner;
public class Demo6{
public static void main(String[] args) {
// 创建对象
Scanner input = new Scanner(System.in);
System.out.print("请输入您的用户名:");
// 输入用户名
String username = input.next();
do {
System.out.print("请输入您的密码:");
// 输入密码
String password = input.next();
// 设定密码,判断密码是否正确
if(!"messi10".equals(password)) {
System.out.println("密码错误!请重试!");
// 结束本次循环 继续下次循环
continue;
}
//循环终止
break;
}while(true);
// 输入正确后提示登录成功
System.out.println("登录成功!");
}
}
continue只能出现在循环中!它表示结束本次循环,进入下一次循环。
掌握程序调试(debug)超级重要,必须要会!!!
世界上没有完美的程序,玩么是尽力将我们的程序接近完美。
bug(八阿哥):臭虫
解决问题方法:
1:读代码,构想运行的结果
2:通过输出语句(System.out.println())/日志来打印内容
3:通过debug工具
断点(breakpoint):程序中断的位置(暂停的位置)
表量表(variable):展示在当前方法内的局部变量(在debug时经常观察他)
(1)在预测的可能出现的问题的位置左侧双击
(2)通过debug as方式运行程序,他会自动运行到断点位置然后暂停,等待你的下一步指令,被选中暂停的这一行目前处于将要执行还未执行的状态
-
F5(step into)(目前了解)表示进入要执行的方法内
-
F6(step over)(必须掌握)表示执行当前行的代码,然后切换到下一行。
-
F8(resume)(必须掌握)快速放行到下一个断点位置(跳过我们不想查看的部分)
(3)观察变量表等信息,发现问题,解决问题