1.1. 循环语句功能
在某些条件下,反复执行特定代码的功能
1.2. 循环语句的四个组成部分
(1) 初始化部分
(2) 循环条件部分
(3) 循环体部分
(4) 迭代部分
1.3. 循环语句分类
(1) for循环
(2) while循环
(3) do/while循环
语法格式:(序号表示执行顺序)
for (初始化表达式①; 布尔值判断表达式②; 更改表达式④){
语句或语句块③;
}
例子如下:
public class Test1 {
public static void main (String[] args) {
for (int i = 1; i <= 100; i++){
System.out.println(i);
}
}
}
练习题:
编写程序FooBizBaz.java,从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。
答案:
public class FooBizBaz {
public static void main (String[] args) {
for (int i = 1; i <= 150; i++){
String str = "";
str += i;
if(i % 3 == 0) {
str += "foo";
}
if(i % 5 ==0) {
str += "biz";
}
if(i % 7 ==0) {
str += "baz";
}
System.out.println(str);
}
}
}
语法格式:
[初始化语句]
while(布尔值判断表达式){
语句或语句块;
[更改语句;]
`}
例子如下:
public class Test2 {
public static void main (String[] args) {
int i = 1;
while(i <= 100) {
System.out.println(i);
i++;
}
}
}
语法格式:
[初始化语句]
do{
语句或语句块;
[更改语句;]
}while(布尔值判断表达式);
例子如下:
(1)
public class WhileLoop {
public static void main (String[] args) {
int result = 0, i = 0;
do {
result += i;
i++;
}while(i <= 100);
System.out.println("result=" + result);
}
}
(2)
public class WhileLoop {
public static void main (String[] args) {
int m = 1;
do {
System.out.println(m);
m++;
}while(m <= 100);
}
}
练习题:
求1到100之间所有偶数的和。用for和while语句分别完成
答案:
(1) for语句
public class WhileLoop {
public static void main (String[] args) {
int res = 0;
for(int i = 1; i < 101; i++) {
if(i % 2 == 0) {
res += i;
}
}
System.out.println(res);
}
}
(2) while语句
public class WhileLoop {
public static void main (String[] args) {
int res0 = 0;
int k = 1;
while(k <= 100) {
if(k % 2 ==0) {
res0 += k;
}
k++;
}
System.out.println(res0);
}
}
(1) for无限循环
for(;;){
}
(2) while无限循环
while(true){
}
概念:
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for
,while
,do...while
均可以作为外层循环和内层循环。实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false时,才会完全跳出内层循环,才可结束外层的当次循环,开始下一次的循环。
注
:设外层循环次数为m次,内层为n次,则内层循环体实际上需要执行m*n=mn次。
例子如下:
public class WhileLoop {
public static void main (String[] args) {
for(int i = 0; i < 4; i++) { // 每一次循环都会执行大括号里面所有代码
System.out.println("大循环---" + i);
for(int j = 0; j < 2; j++) { // 大循环的次数乘以小循环的次数就是小循环的大括号里面执行代码的次数
System.out.println("大循环---" + i + "小循环---" + j);
}
}
}
}
注意
:在写嵌套循环的时候,要尽量保证外层循环的循环次数小于内层循环的循环次数。
如下:
for (int i = 1; i < 900; i++) {
for(int j = 0; j < 20; j++) {
}
}
// 在编写代码的时候,像 上面的for循环与底下的for循环可以达到同样的逻辑效果,要尽量使用下面的循环逻辑
for (int i = 1; i < 20; i++) {
for(int j = 0; j < 900; j++) {
}
}
练习题1:
java实现九九乘法表
答案1:
public class JchenJ {
public static void main (String[] args) {
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + (i * j) +" "); // print不换行
}
System.out.println(); // 换行
}
}
}
练习题2:
输出1~100之间的所有质数
答案2:
public class Zhishu {
public static void main (String[] args) {
for(int i = 1; i <= 100; i++) {
int k = 0; // 整除的次数,变量是在它所在的大括号范围内生效
for(int j = 1; j <= i; j++) { // 循环1到i,用i与循环1到i之间的数分别取模
if(i % j == 0) {
k++;
}
}
if(k == 2) { // 如果循环次数为2,当前大循环的i值就是一个质数
System.out.println(i);
}
}
}
}