当前位置: 代码迷 >> Eclipse >> java Scanner奇怪现象解决方法
  详细解决方案

java Scanner奇怪现象解决方法

热度:37   发布时间:2016-04-23 13:56:51.0
java Scanner奇怪现象
public void getPersonInfo()
{
System.out.println("----------------------输入个人信息---------------------");
Scanner console = new Scanner(System.in);
System.out.print("输入身份证号:");
this.id = console.nextLine();
System.out.print("输入编号:");
this.number = console.nextLine();
System.out.print("输入名字:");
this.name = console.nextLine();
System.out.print("输入性别:");
this.sex = console.nextLine().charAt(0);
System.out.print("输入婚否(true or false):");
this.bool = console.nextBoolean();
System.out.print("输入年龄:");
this.age = console.nextInt();
System.out.print("输入地址:");
this.address = console.nextLine();
System.out.print("输入电话号码:");
this.tel = console.nextLine();
}




输入p1的个人信息
----------------------输入个人信息---------------------
输入身份证号:45
输入编号:45
输入名字:454
输入性别:454
输入婚否(true or false):false
输入年龄:12
输入地址:输入电话号码:((((((((((((((((((这里为什么输入地址时会出问题)))))))))))))))


java.util.InputMismatchException是什么异常 ????

------解决方案--------------------
nextInt
public int nextInt()将输入信息的下一个标记扫描为一个 int。 
此方法调用 nextInt() 的行为与调用 nextInt(radix) 完全相同,其中的 radix 是此扫描器的默认基数。 
nextLine
public String nextLine()此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。 
因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。 
所以nextInt()不会跳过扫描行
import java.util.Scanner;


public class test1 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new test1();
}
String id;
String number;
String name;
char sex;
String address;
int age;
boolean bool;
String tel;
test1()
{
getPersonInfo();
out();
}
private void out() {
// TODO Auto-generated method stub
System.out.println(id);
System.out.println(number);
System.out.println(name);
System.out.println(sex);
System.out.println(address);
System.out.println(age);
System.out.println(bool);
System.out.println(tel);
}

public void getPersonInfo()
{
System.out.println("----------------------输入个人信息---------------------");
Scanner console = new Scanner(System.in);
System.out.print("输入身份证号:");
this.id = console.nextLine();
System.out.print("输入编号:");
this.number = console.nextLine();
System.out.print("输入名字:");
this.name = console.nextLine();
System.out.print("输入性别:");
this.sex = console.nextLine().charAt(0);
if(!(this.sex == '女' || this.sex == '男'))
{
System.out.println("输入有误重新输入性别");
this.sex = console.nextLine().charAt(0);
}
System.out.print("输入婚否(true or false):");
this.bool = Boolean.valueOf(console.nextLine()).booleanValue();
System.out.print("输入年龄:");
this.age = Integer.valueOf(console.nextLine());
System.out.print("输入地址:");
this.address = console.nextLine();
System.out.print("输入电话号码:");
this.tel = console.nextLine();
}
}
好了,吃饭去
  相关解决方案