案例涉及两点:
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)
{
for(int i
=1;i
<=data
;i
++){
sum
+=i
;
}
System
.out
.println("1+2+…+"+data
+"="+sum
);
in:while(true){
System
.out
.println("是否继续:是y,否n");
String t
=in.next();
if(t
.equals("y")){
continue out
;
}else if(t
.equals("n")){
break out
;
}else{
System
.out
.println("请输入y或n!");
continue in;
}
}
}
else
{
System
.out
.println("输入有问题,您输入的整数不符合要求!");
continue out
;
}
}
System
.out
.println("谢谢!");
}
}
初次发帖,欢迎指出代码的可完善之处!