第三周学习笔记
导语:
- if语句可以判断条件是否满足,满足时才做相应的动作,而循环语句可以在满足条件时,不断地重复执行一些动作。
- 重复执行的语句(循环语句)可以多次执行其他语句,它检查一个逻辑条件是否满足,只在满足的时候执行它的循环体。
- while语句是一个循环语句,它会首先判断一个条件是否满足,如果条件满足,则执行后面紧跟着的语句或语句括号,然后再次判断条件是否满足,如果条件满足则再次执行,直到条件不满足为止。后面紧跟的语句或语句括号,就是循环体。
- do-while循环和while循环很像,唯一的区别是我们在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一遍,然后再来判断条件。与while循环相同的是,条件满足时执行循环,条件不满足时结束循环。
3.1 循环
接着第二周自动售票机的案例,现在为了实现售票机持续工作,就将实现售票功能的代码段放入循环结构,这样便可以实现自动售票机的机制。
实现循环代码:
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
// 初始化
Scanner in = new Scanner(System.in);
int balance =0;//最开始的余额为0
// 读入投币金额
while(true)
{
System.out.print("请投币:");
int amount=in.nextInt();
balance = balance+amount;//每次钱投进来
if(balance>=10) {
// 打印车票
System.out.println("*************");
System.out.println("*Java城际铁路专线*");
System.out.println("* 无指定座位票 *");
System.out.println("* 票价:10元 *");
System.out.println("****************");
// 计算并打印找零
System.out.println("找零:"+(balance-10));
balance=0;//清零
}
}
}
}
代码解释:引入的变量balance是为了第一次投入钱不够,第二次进行复投用来相加的,在if判断语句中用balance代替amount,从而避免首次投入钱币不够再投钱币程序不运行的情况出现。同时在一次循环功能执行结束后,也就是找零功能完成后,对balance余额进行清零工作,这样可以避免进入下一次循环的影响。
案例:数数字
程序要读入一个正整数,然后输出这个整数的位数。如:
输入:352
输出:3
代码实现:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// 初始化
Scanner in = new Scanner(System.in);
int number=in.nextInt();//读进来一个数
int count=0;//计数器
while(number>0)
{
number=number/10;
count=count+1;
}
System.out.println("位数为:"+count);
}
}
运行结果:
352
位数为:3
解释代码:
在解释代码之前,先说一说这道题的解法。
计算机如何来计数呢?有一个很大的数,那么我们从右往左对它进行取余计算,如352,首先令352/
while(number>0),如果number>0条件成立,那么就进行{}内的代码,本来应该使用if语句的,但因为我们想让这个{}内的计算一直做下去,直到number<=0为止,因此我们应当使用while循环结构。
WHILE循环
1.定义:将“while”翻译成“当”,一个while循环即:当条件满足,重复执行循环体内的语句。
2.区分:if条件语句进行一次,使用while条件满足情况下可以一直进行,直至不再满足条件。
举例:
if(x>0) {
x=x/10;
n=n+1;
}
while(x>0) {
x=x/10;
n=n+1;
}
说明:在大括号{}里面的内容叫做循环体;在圆括号()里的叫做条件。
注意:
①在循环体内要有改变条件的机会,否则while将会变成死循环一直做下去。
②执行while循环前,首先判断条件是否满足,所以存在循环一次也没被执行的情况。
③条件成立是循环继续的前提。
方法:
人脑模拟计算机(使用“变量表格”,纸上一步一步写下代码运行结果)
调试(在程序适当的地方插入输出来显示变量的内容)
Debug(加断点)
调试举例(数数字的代码)
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// 初始化
Scanner in = new Scanner(System.in);
int number=in.nextInt();//读进来一个数
int count=0;//计数器
while(number>0)
{
number=number/10;
count=count+1;
System.out.println("number="+number+";count="+count);
}
System.out.println("位数为:"+count);
}
运行结果:
352
number=35;count=1
number=3;count=2
number=0;count=3
位数为:3
另外,当我们的程序完成后,通常需要“验证”,测试程序常使用边界数据,如有效范围两端的数据、特殊的倍数等等。&#x