2. 条件判断
a) 要打印1-10的数据,打印到10就不打印了,所以循环变量最大只能到10:i <= 10;
3. 循环操作
a) 打印出1-10的数据,每次打一个
b) 第1次打印1,这时候i=1,第2次打印2,这时候i=2,依次类推,所以我们只要把i打印出来就行了
4. 改变循环变量,每循环一次i就自加1:i++;(作为循环操作的一部分,写在while循环的大括号里)
5. 代码实现
public class HelloWorld1 {
public static void main(String[] args) {
int i = 1;
while (i <= 10) {
System.out.println(i);
i++;
}
}
}
g) 示例3:实现1-10的数字相加求和,用while循环实现
h) 分析:
1. 根据上面的例子,我们可以得到从1-10的数字。我们只要把这些数字加起来,放到一个变量里,就能得到它们的和了
2. 循环变量的初始值:
a) 从1开始累加,所以循环变量应该从1开始,
b) 我们声明一个循环变量:int i = 1;
3. 条件判断
a) 要实现1-10的数字相加求和,累加到10就不累加了,所以循环变量最大只能到10:i <= 10;
4. 循环操作
a) 用一个变量来保存累加后的和:int sum = 0;这个变量的声明要在循环结构的外面。
b) 每次循环,将本次得到的数与以前的和相加,得到新的和。
5. 改变循环变量,每循环一次i就自加1:i++;(作为循环操作的一部分,写在while循环的大括号里)
6. 代码实现
public class HelloWorld1 {
public static void main(String[] args) {
int sum = 0;
int i = 1;
while (i <= 10) {
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
i) 示例4:录入班级人数和学员成绩,计算班级学员的平均成绩
j) 分析:
1. 循环变量的初始值:从第一个开始输入:int i = 1;
2. 循环条件:目前录入的成绩数目小于总人数
a) 使用i做计数器,每循环一次就递增1,即每输入一个学员成绩就递增1
b) 只要i小于等于班级总人数,就继续从控制台接收输入的学员成绩
3. 循环操作:录入学生成绩,并累加求和
4. 循环变量的改变:每循环一次,人数就要加1:i++(作为循环操作的一部分,写在while循环的大括号里)
5. 代码实现:
public class HelloWorld5 {
public static void main(String[] args) {
String classNo; // 班级号
int stuNum; // 班级的学生人数
int score; // 学生分数
int sum = 0; // 学生分数总和
int avg; // 学生成绩平均值
System.out.print("请输入班级号: ");
Scanner input = new Scanner (System.in);
classNo = input.next();
System.out.print("请输入该班级的学员总数:");
stuNum = input.nextInt();
int i = 1;
while (i <= stuNum) {
System.out.print("请输入学号" + i + "的成绩:");
score = input.nextInt();// 从键盘接收学生成绩
sum = sum + score;
i++;
}
avg = sum / stuNum;
System.out.println("该班级学员的平均成绩为: " + avg);
}
}
k) 示例5:还是吃饺子,不过这次可以随便吃,只不过每吃一个就要问一下,还要不要吃下一个,如果要吃,就再吃一个,就这样循环,直到不想吃才停下来。
l) 分析:
1. 这次循环的初始条件是什么呢
a) 就是第一次回答要吃:“y”,只要回答的是“y”,就可以再吃下一个,如果回答了“n”,当然就不吃了
b) 所以我们要在控制台上接收输入的字符串“y”或是“n”
i. 我们在前面用input.nextInt()将控制台输入的字符串转换成int类型的数据再赋值给int类型的变量,现在我们要直接得到字符串
ii. 从控制台获得一个字符串:String answer = input.next();
2. 循环条件:
a) 要判断回答的是不是“y”,只要回答的是“y”就要吃饺子(继续循环),回答“n”才不吃了(结束循环)
b) 比较两个String类型的值是否相等的方法:
i. 使用字符串的equals方法
ii. equals语法:
aString.equals(bString);//比较String类型变量aString是否等于
// bString,如果相等,结果为true;如果不相等,结果为false
3. 循环操作:
a) 当然是吃饺子了
b) 吃完饺子后还要再问一下,要不要再吃一个
c) 用变量接收控制台输入的回答
4. 循环变量的变化:
a) 用变量接收控制台输入的回答,如果没有变化:回答“y”,那就要继续循环,如果回答了“n”,就结束循环了(条件不成立了)
5. 代码实现:
import java.util.Scanner;
public class HelloWorld1 {
public static void main (String [] args) {
Scanner input = new Scanner (System.in);
System.out.print("要不要吃饺子:");
String answer = input.next ();
while (answer.equals ("y")) {
System.out.println("吃饺子。");
System.out.print("还吃饺子么?");
answer = input.next ();
}
}
}
6. 我们改动一下上面的例子,改变提问的方式:不问要不要吃饺子了,问他吃饱了没有,如果没有,也就是回答“n”,就给他吃饺子,否则就不给他吃了。
7. 分析:这里其实只是条件发生的变化:以前是和“y”比较,现在是和“n”比较
a) 方法1:把answer.equals("y")中的“y”改成“n”
b) 方法2:仍然和“y”比较,可以在比较结束后对结果取反,在前面加个“!”就行了。
3) 使用while循环的常见问题
a) 永远都不会退出的循环称为死循环:一定要记得循环操作中要有改变循环条件的语句:
public class HelloWorld {
public static void main (String [] args) {
int i = 0;
while (i < 4) {
System.out.println("欢迎中兴3G学员");
// 这里缺了什么?(应该在这里改变循环条件:i++)
}
}
}
b) 注意检查循环次数是否满足需求:如果不满足,要进行相应的修改
public class HelloWorld {
public static void main (String [] args) {
int i = 1;
while (i < 4) {// 条件应该是: i < 5
System.out.println("欢迎中兴3G学员");
i++;
}
}
}
c) 注意:如果一开始条件就不满足,while循环一次都不执行
public class HelloWorld {
public static void main (String [] args) {
int i = 1;
while (i > 5) {// 条件应该是: i < 5
System.out.println("欢迎中兴3G学员");
i++;
}
}
}
d) 我们在编写代码时,遇到错误是很正常的事情,作为一个软件工程师,在我们的工作中,排除程序中错误的时间一般要比写代码的时间还要多。要经常编写代码,这样才能多遇到错误,通过对错误的认真分析,提高我们的编码能力。
e) 我们还会学习专门的排错技术。这里说的错误不是写代码时的错误,而是程序在运行时发生的错误。因为代码的编写错误在我们用的Eclipse里会自动给出。程序运行时的错误我们会有专门的学习。
4) 小结
a) 2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?
b) 分析:
1. 循环初始条件:2006年,有8万人
2. 循环条件:培训学员人数没有达到20万人
3. 循环操作:每次增加25%,并累加求和,还要算出当年是哪一年
4. 这里的循环操作里同时也包含了循环变量的改变
c) 代码
public class HelloWorld {
public static void main(String[] args) {
int year = 2006; // 年份
int students = 80000; // 学生数
while (students < 200000) {
students = (int) (students * (1 + 0.25));
year++;
System.out.println(year + "年,培训 " + students + "人");
}
System.out.println(year + "年,年培训人到达20万人");
}
}
d) 小结:
1. while循环可以解决固定循环次数的问题
2. 也可以解决没有固定循环次数的问题,而且主要是用来解决没有固定循环次数的问题
3. while循环是先判断,后执行
|
|