Java流程控制之循环结构
while 循环
- 例:求1到5的累加和
package com.flow1;
public class PlusDemo {
public static void main(String[] args) {
// 求1到5的累加和
//1+2+3+4+5
int n=1;
int sum=0;//sum是存放和的变量
while(n<=5) {
sum=sum+n;//sum+=n
n++;
}
System.out.println("1到5的累加和为:"+sum);
}
}
- 计算1到5的平方和
package com.flow1;
public class LoopDemo {
public static void main(String[] args) {
// 计算1到5的平方和
int n=1,sum=0;
while(n<=5) {
sum=sum+n*n;
n++;
}
System.out.println("1到5的平方和为:"+sum);
}
}
- 循环输出英文字母
package com.flow1;
public class CharDemo {
public static void main(String[] args) {
// 循环输出26个英文小写字母,分两行输出
char ch='a';
int count=1;
while(ch<='z') {
System.out.print(ch+" ");
if(count%13==0) {
System.out.println();
}
count++;
ch++;
}
}
}
do-while 循环
- 求1到5的累加和
package com.flow1;
public class DowhileDemo {
public static void main(String[] args) {
// 求1到5的累加和
int n=1;
int sum=0;
do {
sum+=n;
n++;
}while(n<=5);
System.out.println("1到5的累加和为:"+sum);
}
}
- 猜字游戏
- 要求猜一个介于1到10之间的数,然后将猜测的数字与实际值进行比较,并给出提示,以便更能接近实际值,直到猜中为止
- 此处可运用随机数 Math.mondom()*10+1 表示 [1,11) 之间的随机数
package com.flow1;
import java.util.Scanner;
public class GuessDemo {
public static void main(String[] args) {
// 设置一个要猜测的数
int number=(int)(Math.random()*10+1);//使用随机数生成1到10之间的随机数
int guess;
System.out.println("请猜一个介于1到10之间的数");
do {
System.out.println("请输入您猜测的数:");
Scanner sc=new Scanner(System.in);
guess=sc.nextInt();
if(guess>number) {
System.out.println("太大!");
}else if(guess<number) {
System.out.println("太小!");
}
}while(number!=guess);
System.out.println("您猜中了!答案为:"+number);
}
}
for 循环
- 求1到5的累加和
- 此处的 int n=1; n是局部变量,局部变量只在定义它的大括号内有效
package com.flow1;
public class ForDemo {
public static void main(String[] args) {
int sum=0;
for(int n=1;n<=5;n++) {
sum=sum+n;
}
System.out.println("1到5的和为:"+sum);
}
}
package com.flow1;
import java.util.Scanner;
public class NumberInput {
public static void main(String[] args) {
// 从键盘接受数据
Scanner sc=new Scanner(System.in);
int n;
for(;;){
n=sc.nextInt();
System.out.println(n);
if(n==0)break;
}
}
}
编程练习
- 编写一个程序,求出200到300之间的数,且满足条件:它们个十百位三个数字之积为42,三个数字之和为12
package com.flow1;
public class LoopDemo1 {
public static void main(String[] args) {
// 定义变量a,b,c,用于存放个位,十位,百位上的数字
int a,b,c;
for(int d=200;d<=300;d++)//使用for循环
{
//取出百位数
a=d/100;
//取出十位数
b=d/10-10*a;
//取出个位数
c=d-100*a-10*b;
int e;
//计算三数之积
e=a*b*c;
//计算三数之和
int sum;
sum=a+b+c;
if(e==42&&sum==12) {
System.out.println(d);
}
}
}
}
嵌套循环
- 输出一个由星号组成的直角三角形
package com.flow1;
public class StarDemo1 {
public static void main(String[] args) {
int m=1;//外重循环的变量
int n=1;//内重循环的变量
System.out.println("输出10行10列的星号");
while(n<=10) {
m=1;
while(m<=n)
{
System.out.print("*");
m++;
}
System.out.println();
n++;
}
}
}
- 求1!+2!+3!+……+25!
package com.flow1;
public class JiechengPlus {
public static void main(String[] args) {
long s=1;
long sum=0;
for(int i=1;i<=25;i++)
{
s=1;
for(int j=1;j<=i;j++)
{
s=s*j;//s存放阶乘计算的结果
}
sum=sum+s;
}
System.out.println("1!+2!+3!+4!……+25!="+sum);
}
}
编程练习
- 用星号输出金子塔
package com.flow1;
public class StarDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<=5;i++) {
for(int j=4;j>=i;j--) {
System.out.print(" ");
}
for(int k=1;k<2*i;k++) {
System.out.print("* ");
}
System.out.println();
}
}
}
break 语句
continue 语句
程序调试debug
- 第一步,设置断点
- 第二步,执行调试
- 第三步,进行单步调试( F6快捷键 )
- 多断点调试用 F8
流程控制总结
顺序 选择 循环
选择语句
- if 语句
- if-else 语句
- 多重 if-else 语句
- 嵌套 if-else 语句
- switch 语句
循环结构
- while 循环
- do-while 循环
- for 循环
- 嵌套循环
- break 语句和 continue 语句