Java 边做边循环问题
因此,我提示用户输入一个介于1-12之间的数字。如果它们不满足要求,循环将再次运行它。我的循环一直有错误 代码Java 边做边循环问题,java,do-while,Java,Do While,因此,我提示用户输入一个介于1-12之间的数字。如果它们不满足要求,循环将再次运行它。我的循环一直有错误 代码 import java.util.Scanner; 公共级HW7{ 公共静态int inputMonth(扫描仪输入){ int输入=Integer.MIN_值; 布尔标志=真; 做{ System.out.println(“输入1-12之间的月份:”); if(在.hasNextInt()中){ input=in.nextInt(); in.nextLine(); 如果(输入>=1&
import java.util.Scanner;
公共级HW7{
公共静态int inputMonth(扫描仪输入){
int输入=Integer.MIN_值;
布尔标志=真;
做{
System.out.println(“输入1-12之间的月份:”);
if(在.hasNextInt()中){
input=in.nextInt();
in.nextLine();
如果(输入>=1&&input在主方法中使用此代码:
Scanner input = new Scanner(System.in);
inputMonth(input);
您不需要条件,if(in.hasNextInt())
。此外,应该为每个错误/无效输入重置标志
,例如,标志=false
应该放在循环中。我还建议您放置异常处理代码来处理无效输入
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
// Test
Scanner in = new Scanner(System.in);
System.out.println(inputMonth(in));
}
public static int inputMonth(Scanner in) {
int input = Integer.MIN_VALUE;
boolean flag = false;
do {
flag = false;
System.out.print("Enter a month between 1-12: ");
try {
input = in.nextInt();
if (input < 1 || input > 12) {
System.out.println("The month must be between 1-12. Please try again.");
in.next();
flag = true;
}
} catch (InputMismatchException e) {
System.out.println("This is an invalid input. Please try again.");
in.next();
flag = true;
}
} while (flag);
return input;
}
}
另一个示例运行:
Enter a month between 1-12: 2
2
Enter a month between 1-12: w
This is an invalid input. Please try again.
Enter a month between 1-12: 15
The month must be between 1-12. Please try again.
0
Enter a month between 1-12: 3
3
做这样的事
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
inputMonth(in);
}
public static int inputMonth(Scanner in) {
int input= Integer.MIN_VALUE;
boolean flag=true;
do{
System.out.println("Enter a month between 1-12:");
if(in.hasNextInt()){
input=in.nextInt();
in.nextLine();
if(input>=1 && input<=12) {
flag=false;
}
}
} while(flag);
return input;
}
}
import java.util.Scanner;
公共类测试{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
输入月份(单位:个月);
}
公共静态int inputMonth(扫描仪输入){
int输入=Integer.MIN_值;
布尔标志=真;
做{
System.out.println(“输入1-12之间的月份:”);
if(在.hasNextInt()中){
input=in.nextInt();
in.nextLine();
如果(input>=1&&inputif用户输入的内容不是int
,这将永远循环(如所述)-hasNextInt
返回false
,由于IO输入已被读取,每次迭代都将继续返回false
。如果输入没有int
,则不会读取输入,循环将重试,但错误的值仍在等待读取。读取一行(例如.nextLine()中的)在else
块中(对于如果hasnetint
)