int retry;
do {
System.out.println("计算月份。\n请输入月份:");
int month = input.nextInt();
if (month>=3 && month<=5)
System.out.println("这是春天。");
else if(month>=6 && month<=8)
System.out.println("这是夏天。");
else if(month>=9 && month<=11)
System.out.println("这是秋天。");
else if(month==12 || month==1 || month==2)
System.out.println("这是冬天。");
System.out.println("要重复一次吗?1...Yes/0...no");
retry=input.nextInt();
}while(retry==1);//控制是否结束循环
本程序中do语句的流程如图所示由于“重复”称为循环,因此将作为循环对象的do语句称为循环体
此外 while语句和for语句作为循环对象,也被称为循环体。
do 语句至少会执行一次循环体,而while语句则可能一次都不执行
当某个条件成立时,并非只有do语句可以循环执行处理,while语句也可以实现循环处理。
int x;
do {
System.out.println("正整数:");
x= input.nextInt();
}while(x<0);
while (x>=0) {//当程序结束时x一定为正值
System.out.println(x);
x--;
}
后置递增运算符和后置递减运算符
x++ //x的值递增(增加1),结果是递增前的值
x-- //x的值递减(减少1),结果是递减前的值
y=x++ //当x=5时 赋值给y的值是递增前的x值 即y=5
前置递增运算符和前置递减运算符
++x//x的值递增(增加1),结果是递增后的值
--x//x的值递减(减少1),结果是递减后的值
y=++x; //赋给y的是递增后的x的值 假设x=5 结果为y=6
表达式的求值顺序
二元运算符的左操作数会比右操作数先进行求值。
class text {
public System void main(String[] args) {
int a=3;
int x=(a++)*(2+a);
System.out.println("a="+a);
System.out.println("x="+x);
}
}
输出结果
a=4;
x=18;
class text {
public System void main(String[] args) {
int a=3;
int x=(a++)*(2+a);//表达式先对a++求值,a由3变为4 之后对2+a进行运算,求得其为6 ,a不发生改变
System.out.println("a="+a);//后对3*6运算结果为 18,将值赋给x
System.out.println("x="+x);
}
}
[点击并拖拽以移动]
例题
逆序输出读入的正整数值
Scanner input = new Scanner(System.in);
System.out.println("逆序显示正整数值。");
int x;
do {
System.out.println("正整数值:");
x=input.nextInt();
} while (x<=0);
System.out.println("倒过来读是:");
while (x>0) {
System.out.print(x%10);//显示x的最低位
x/=10;//x的最低位
}
计算整数的和
import java.util.Scanner;
class SumUp {
public System void main(String[] args) {
Scanner StdIn=new Scanner(System.in);
System.out.println("计算1到n的和。");
int n;
do {
System.out.println("n的值:");
n=stdIn.nextInt();
}while(n<=0);//当n小于零时执行
int sum=0,i=1; //改变i的值,可改变从几开始累加
while(i<=n) {
sum+=i;
i++;
}
System.out.println("1到"+n+"的和是"+sum+"。");
}
}