我想接受用户输入,例如日期“2014 02 22 21 14”。请注意,空格分隔要存储的每个变量。
我想解析它并将 2014 存储到一个名为
int
的 year
变量中,然后将 02 存储到一个名为 int
的 month
变量中,并将 22 存储到 int
变量 day
中。
有人可以向我展示一个如何执行此操作的示例吗?那就太好了。
public class HelloApp {
public static void main(String[] args) {
// Show dateformat to user, so he can enter the format
System.out.println("The date format is: yyyy mm dd");
Scanner sc = new Scanner(System.in);
String dateString = sc.nextLine();
String[] tokens = dateString.split(" ");
int year = Integer.parseInt(tokens[0]);
int month = Integer.parseInt(tokens[1]);
int day = Integer.parseInt(tokens[2]);
System.out.println("Year :" +year);
System.out.println("month :" +month);
System.out.println("day :" +day);
}
}
使用分割(正则表达式):
输入
String input = "2014 02 22 21 14";
将输入拆分为空格之间的部分
String[] data = input.split(" ");
该数组包含 2014,02,22,21 和 14
获得第一个物品
String yearString = data[0];
这是“2014”
转换为 int
int year = Integer.parseInt(yearString);
这是数字年份
享受编码的乐趣 -查理
要添加到sadasidha的答案中,您不需要拆分字符串。 Scanner 可以充当解析器,因此您可以直接访问下一个变量,而不必担心字母被解析为 int 的可能性:
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
//and so on
它的作用是使用输入的字符串创建一个扫描器,例如:“2014 02 22 21 14”,然后查找该字符串中的下一个整数。下次执行 sc.nextInt() 时,它将根据空格作为分隔符为您提供下一个整数。
在此处阅读有关 Scanner 的更多信息:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
这是假设您知道格式将以正确的顺序进行解析。当然,如果您需要所有可能的异常处理,您就必须检查这一点。