案例涉及两点:
1、控制循环流程:label在break、continue中的使用;
2、in.hasNextInt()判断程序接收到的是否为整数。
说明
out只是一种标号(label),label用可以有用in、out、a、b代替都一样,可以看做是给代码命名。
break label表示结束label:后面的循环,continue label表示重头开始label:后面的循环。
in.hasNextInt()判断in.next() 接收到的数据
in.next() 接收到整数,in.hasNextInt()判断的循环结束
//此处代码中的循环接收到整数才会结束
//in.hasNextInt()结果为布尔类型:true/false,输入整数时结果为true
//不使用in.next()的话,in.hasNextInt()只储存对第一次接收到的数据所做的判断结果
//in.next()可以重复接收数据,接收字符串到in.hasNextInt()判断是否为整型
Scanner in = new Scanner(System.in);
while(!in.hasNextInt()){ //输入的不是整数时,!in.hasNextInt()结果为true,循环继续
System.out.println("输入的不是整数!");
in.next();//接收到整数后循环结束
}
完整代码
import java.util.Scanner;
public class BreakContinue_LabelOut
{
public static void main(String args[])
{
out:while(true){//无限循环,循环体内部设置结束语句
int sum=0;
int data;
System.out.println("请输入一个大于等于3的整数:");
Scanner in = new Scanner(System.in);
while(!in.hasNextInt()){//循环直到输入整数
System.out.println("输入有问题,您输入的不是整数!\n请输入一个大于等于3的整数:");
in.next();
}
data = in.nextInt();
if(data>=3)
{//该整数>=3,开始进行运算
for(int i=1;i<=data;i++){//关键运算代码
sum+=i;
}
System.out.println("1+2+…+"+data+"="+sum);
//判断是否继续运算,输入y或n得到判断结果后判断结束
in:while(true){
System.out.println("是否继续:是y,否n");
String t=in.next();
if(t.equals("y")){//输入y继续运算
continue out;//continue out跳出,继续out后面的循环
}else if(t.equals("n")){//输入n,结束运算
break out;//break out跳过out后面的循环,执行后面的代码
}else{//输入的不是y或n。(大括号可去)
System.out.println("请输入y或n!");
continue in;//输入错误,继续当前in循环。
}
}//in循环尾括号
}//输入的整数>=3
else
{//输入的整数<3
System.out.println("输入有问题,您输入的整数不符合要求!");
continue out;//继续out循环,重新接收整数
}//输入整数时的判断if
}//第1层out循环结束
System.out.println("谢谢!");
}
}
初次发帖,欢迎指出代码的可完善之处!