代码
package info.code;
import java.util.Scanner;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class GetDataFromKeyBoardAndStoreInDB {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Product p = new Product();
p.setPid(s.nextInt());
p.setName(s.next());
p.setPrice(s.nextDouble());
Configuration cfg = new Configuration();
cfg.configure();
SessionFactory sf = cfg.buildSessionFactory();
Session hsession = sf.openSession();
hsession.beginTransaction();
hsession.save(p);
hsession.getTransaction().commit();
hsession.close();
sf.close();
}
}
输入
115
Hello World
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextDouble(Scanner.java:2387)
at info.code.GetDataFromKeyBoardAndStoreInDB.main(GetDataFromKeyBoardAndStoreInDB.java:18)
-- 上面的代码在提供 HelloWorld 作为输入时工作正常,但在提供 Hello World 时却不行 .此方法是否不接受带空格的字符串。
最佳答案
Scanner
使用分隔符模式将其输入分成标记,默认情况下匹配空格,如果下一个标记与 Integer 不匹配,则抛出
/InputMismatchException
String
/Double
/... 正则表达式(取决于您调用的方法),或者超出范围。这就是为什么在 Hello World
中使用空格时抛出此异常的原因(第三个标记的类型是 String
而不是 double
)。
关于从键盘获取字符串中的 java.util.InputMismatchException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24405848/