小弟写了一段代码,如下:
import java.util.Scanner;class GasMileage
{ public static void main(String[] args)
{
int miles;
double gallons, mpg;
Scanner scan = new Scanner(System.in);
while(true) //验证输入的是否是整数,若不是,则重新输入
{
System.out.print("Enter the number of miles: ");
if(scan.hasNext("^[1-9]\\d*$")) //验证整数的正则表达式
{
miles = scan.nextInt();
break;
}
else
{
String temp=scan.next();
System.out.println("你输入的是:"+ temp);
System.out.println("输入错误,请输入整数!");
}
}
System.out.print("Enter the gallons of fuel used: ");
gallons = scan.nextDouble(); mpg = miles / gallons; System.out.println("Miles Per Gallon: " + mpg);
}}可是小弟运行程序的时候,只要是第一次输入不是整数,则再次输入整数就不再验证了,而直接报告说是输入不是整数。而小弟用temp变量接收输入的值,的确是整数啊!这是怎么回事呢?请各位大侠不吝赐教,小弟不胜感激!
import java.util.Scanner;class GasMileage
{ public static void main(String[] args)
{
int miles;
double gallons, mpg;
Scanner scan = new Scanner(System.in);
while(true) //验证输入的是否是整数,若不是,则重新输入
{
System.out.print("Enter the number of miles: ");
if(scan.hasNext("^[1-9]\\d*$")) //验证整数的正则表达式
{
miles = scan.nextInt();
break;
}
else
{
String temp=scan.next();
System.out.println("你输入的是:"+ temp);
System.out.println("输入错误,请输入整数!");
}
}
System.out.print("Enter the gallons of fuel used: ");
gallons = scan.nextDouble(); mpg = miles / gallons; System.out.println("Miles Per Gallon: " + mpg);
}}可是小弟运行程序的时候,只要是第一次输入不是整数,则再次输入整数就不再验证了,而直接报告说是输入不是整数。而小弟用temp变量接收输入的值,的确是整数啊!这是怎么回事呢?请各位大侠不吝赐教,小弟不胜感激!
{ public static void main(String[] args)
{
int miles;
double gallons, mpg;
Scanner scan = new Scanner(System.in);
while(true) //验证输入的是否是整数,若不是,则重新输入
{
System.out.print("Enter the number of miles: ");
String temp=scan.next();
if(temp.matches("^[1-9]\\d*$")) //验证整数的正则表达式
{
miles=Integer.parseInt(temp);
break;
}
else
{
System.out.println("你输入的是:"+ temp);
System.out.println("输入错误,请输入整数!");
}
}
System.out.print("Enter the gallons of fuel used: ");
gallons = scan.nextDouble();
mpg = miles / gallons;
System.out.println("Miles Per Gallon: " + mpg);
}
}