java - 将第二个输入语句添加到代码后出错
问题描述
代码_1
Scanner input = new Scanner(System.in);
System.out.println("Enter Name : ");
String name = input.nextLine();
System.out.println("String name : " + name);
System.out.println("Enter age : ");
int age = input.nextInt();
代码_2
在这里,我试图同时获得姓名和年龄。此代码采用名称,在我输入名称后,它会打印错误并且不询问年龄...
System.out.println("Enter Name and age : ");
String name = input.nextLine();
int age = input.nextInt();//error may be over here
System.out.println("String name : " + name);
System.out.println("String name : " + age);
解决方案
问题是 nextLine 正在读取所有内容,因此 nextInt 没有可读取的内容。你想做的是。
1.读取输入
2.被某物分割(例如空格)
3.手动解析文本。
public static void main(String[] args) {
// Try-with-resources so its closes the scanner.
try (Scanner input = new Scanner(System.in);) {
System.out.println("Enter Name and age : ");
// Read input, split by spaces.
String[] text = input.nextLine().split(" ");
String name = "";
// Read the values, but not the last one.
for (int i = 0; i < text.length - 1; i++) {
name += text[i] + " ";
}
try {
// Take the last one and convert it to int.
int age = Integer.parseInt(text[text.length - 1]);
// Print if everything was ok.
System.out.println("String name : " + name);
System.out.println("String name : " + age);
} catch (NumberFormatException e) {
// The last field was not a number.
System.err.println("Age has to be a number");
}
} // No catch propagate the exception.
}
推荐阅读
- javascript - 如何使用 API 从谷歌云平台读取文本文件
- java - 我正在尝试使用以下代码获取客户数据,它总是返回 null
- python - 在 conda 环境中使用 pip,是否仅在该 conda 环境中安装包?
- c# - 使用只有一个类型参数 C# 的泛型接口调用泛型方法
- r - 用相等的索引替换数字元素
- javascript - 弹出信息以在 Squarespace 中分享 FB 上的帖子
- java - 当执行需要很长时间时,nanoTime() 显示的差异太小
- isabelle - Isabelle/HOL 中的灵活/模糊规则应用
- c# - 试图抓取 facebook messenger 聊天,尤其是。facebook Messenger 群聊
- docker - 来自守护进程的错误响应:此操作系统上的守护进程不支持导出 Windows 容器