teacher让我专门创建一个方法来接收输入数据并判断类型,但是写完了每次都要输入三次才能继续,这是为什么?
public class Get {
Scanner sc=new Scanner(System.in);
public int get(int begin,int over){
while(!sc.hasNextInt()||sc.nextInt()<begin||sc.nextInt()>over){
System.out.println("输入格式错误!请重新输入。");
sc.next();
}
return sc.nextInt();
}
public double get(double begin,double over){
while(!sc.hasNextDouble()||sc.nextDouble()<begin||sc.nextDouble()>over){
System.out.println("输入格式错误!请重新输入。");
sc.next();
}
return sc.nextDouble();
}
}
这个问题很简单,主要是对nextint和hasnextint的理解不当,hasnextint是检查接下来的数据类型,不会对数据本身造成影响,而nextint会扫描接受字符串,所以你的第一第二次输入都被它接受了,因此你需要输入三次。正确的做法是定义一个变量接收数据,对变量的值进行判断,最后返回该变量
在c++语言中用cin来进行输入操作
在java中则需要用scanner获得输入
import java.util.Scanner;
public class TestScanner {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入名字:");
String name = scanner.nextLine();
System.out.println("请输入你的年龄:");
int age = scanner.nextInt();
System.out.println(name);
System.out.println(age);
}
}