很抱歉,如果这是一个显而易见的问题,但我是java新手,不知道该怎么做。我尝试在线查找,但无法真正理解他们在谈论什么。我想接受用户输入,例如日期“2014 02 22 21 14”。请注意,空格分隔要存储的每个变量。
我想解析它并将2014存储到名为year的INT变量中,然后将02存储到名为month的INT变量中,并将22存储到当前INT变量中。
有人可以告诉我一个如何做到这一点的例子,这会很棒。
答案 0 :(得分:2)
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);
}
}
答案 1 :(得分:1)
使用split(正则表达式):
输入
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);
这是数字年份
有趣的编码 -Charlie
答案 2 :(得分:0)
要添加到sadasidha的答案,您不需要拆分字符串。扫描程序可以充当解析器,因此您可以直接访问下一个变量,而不必担心将字母解析为int的可能性:
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
//and so on
这样做会创建一个带有输入字符串的扫描仪,例如:“2014 02 22 21 14”,然后查找该字符串中的下一个整数。下次你执行sc.nextInt()时,它会根据空格作为分隔符给你下一个整数。
在此处阅读有关扫描仪的更多信息:http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
这是假设您知道将以正确的顺序解析格式。当然,如果您需要所有可能的异常处理,您必须检查它。