4.1while循环
- while语句
while(循环条件表达式){
循环体;
}
- 示例 猜数字
import java.util.Scanner;
public class Test4_1 {
public static void main(String[] args){
//1.随机产生[0,100]的随机数
int number=(int)(Math.random()*101);
//2.提示用户输入所猜想的值
System.out.println("Guess a magic number between 0 and 100");
Scanner scanner=new Scanner(System.in);
//3.比较所猜的值与随机生成的值
while(true){
System.out.print("Enter a guess:");
int num=scanner.nextInt();
if(num<number){
System.out.println("too low");
}else if(num>number){
System.out.println("too high");
}else{
System.out.println("Yes the number is "+number);
break;
}
}
}
}
4.2 do…while语句
do{
...循环体;
}while(循环条件表达式);
import java.util.Scanner;
public class Test4_1dowhile {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int number=(int)(Math.random()*101);
int num=0;
do{
System.out.print("Enter a guess:");
num=scanner.nextInt();
if(num<number){
System.out.println("too low");
}else if(num>number){
System.out.println("too high");
}
}while(num!=number);
System.out.println("Yes the number is "+number);
}
}
4.3 for循环
- for 语句
for(循环变量赋初值;循环条件;增量表达式){
循环体语句块;
}
-
for 嵌套语句
-
示例:最大公约数
import java.util.Scanner;
public class Test4_2 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.提示用户输入 n1 n2
System.out.println("Enter n1 abd n2:");
int n1=scanner.nextInt();
int n2=scanner.nextInt();
//2.比较两个值的大小
int min=Math.min(n1, n2);
//3.求取公约数
for(int k=min;k>=1;k--){
if(n1%k==0&&n2%k==0){
System.out.println(k);
break;
}
}
}
}
- 示例:预测未来学费
import java.util.Scanner;
public class Test4_3 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
double tuition=10000;
int year=0;
while(tuition<20000){
tuition=tuition*1.07;
year++;
}
System.out.println("the year is "+year);
}
}
- 将十进制转换成十六进制
import java.util.Scanner;
public class Test4_4 {
public static void main(String[] args){
System.out.print("输入一个十位数:");
Scanner scanner=new Scanner(System.in);
int number=scanner.nextInt();
String str="";
while(number!=0){
int num=number%16;
System.out.println(num);
if(num<10){
str=num+str;
}else{
switch(num){
case 10:
str="A"+str;
break;
case 11:
str="B"+str;
break;
case 12:
str="C"+str;
break;
case 13:
str="D"+str;
break;
case 14:
str="E"+str;
break;
case 15:
str="F"+str;
break;
}
}
number/=16;
}
System.out.println("0X"+str);
}
}
4.4 循环嵌套
- 示例:打印直角三角形
package lian4;
public class 示例 {
public static void main(String[] args){
for(int i=1;i<=5;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
package lian4;
public class 示例 {
public static void main(String[] args){
for(int i=1;i<=5;i++){
for(int k=1;k<=5-i;k++){
System.out.print(" ");
}
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
- 示例:打印菱形
package lian4;
public class 示例 {
public static void main(String[] args){
for(int i=1;i<=9;i++){
for(int k=1;k<=Math.abs(5-i);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&(i+j<=10);j++){
System.out.print("* ");
}
System.out.println();
}
}
}
- 示例:打印空心菱形
package lian4;
public class 示例 {
public static void main(String[] args){
for(int i=1;i<=9;i++){
for(int k=1;k<=Math.abs(5-i);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&(i+j<=10);j++){
if(j==1||j==i||(i+j==10)){
System.out.print("* ");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
4.5break和coutinue(跳转语句)
- break语句
break语句有两种作用:其一,break语句用来退出switch结构,跳出switch结构继续执行后续语句。其二,break语句用来终止循环。 - coutinue语句
continue语句用来终止本次循环。其功能是终止当前正在执行的本次循环,即跳过后面剩余的语句,转而执行循环的第一条语句,计算和判断循环条件,决定是否进入下一轮循环。 - return语句
return语句并不是专门用于结束循环的,return的功能是返回一个方法,当一个方法执行到一个return语句时,这个方法将被结束。 - 示例:判断回文串
import java.util.Scanner;
public class Test4_6 {
public static void main(String[] args){
String s="上海自来水来自海上";
boolean flag=true;
for(int m=0,n=s.length()-1;m<s.length()/2&&n>s.length()/2;m++,n--){
if(s.charAt(n)!=s.charAt(m)){
flag=false;
break;
}
}
if(flag){
System.out.println("是回文!");
}else{
System.out.println("不是回文!");
}
}
}
- 示例:显示素数
public class Test4_7 {
public static void main(String[] args){
int count=0;//记录素数个数
int number=1;
while(count<=50){
boolean flag=true;
for(int i=2;i<=number/2;i++){
if(number%i==0){
flag=false;
break;
}
}
if(flag){
count++;
System.out.print(number+" ");
if(count%10==0){
System.out.println();
}
}
number++;
}
}
}
本章小结
1.循环语句有三类: while 循环、 do-while 循环和 for 循环。
2.循环中包含重复执行的语句的部分称为循环体。
3.循环体执行一次称为循环的一次迭代。
4.无限循环是指循环语句被无限次执行。
5.在设计循环时, 既需要考虑循环控制结构, 还需要考虑循环体。6.while 循环首先检査循环继续条件。 如果条件为 true, 则执行循环体; 如果条件为 false, 则循环结
束。
7.do-while 循环与 while 循环类似, 只是 do-while 循环先执行循环体, 然后再检査循环继续条件,
以确定是继续还是终止。
8.while 和 do-while 循环常用于循环次数不确定的情况。
9.标记值是一个特殊的值, 用来标记循环的结束。
10.for 循环一般用在循环体执行次数固定的情况。
11.for 循环控制由三部分组成。 第一部分是初始操作, 通常用于初始化控制变量。 第二部分是循环继
续条件, 决定是否执行循环体。 第三部分是每次迭代后执行的操作, 经常用于调整控制变量。 通常,
在控制结构中初始化和修改循环控制变量。
12.while 循环和 for 循环都称为前测循环( pretest loop), 因为在循环体执行之前, 要检测一下循环
继续条件。
13.do-while 循环称为后测循环( posttest loop), 因为在循环体执行之后, 要检测一下这个条件。
14.在循环中可以使用 break 和 continue 这两个关键字。
15.关键字 break 立即终止包含 break 的最内层循环。
16.关键字 continue 只是终止当前迭代。