Java-如何解析,输入并将其值存储到'int'变量中

时间:2014-10-15 12:10:54

标签: java

很抱歉,如果这是一个显而易见的问题,但我是java新手,不知道该怎么做。我尝试在线查找,但无法真正理解他们在谈论什么。我想接受用户输入,例如日期“2014 02 22 21 14”。请注意,空格分隔要存储的每个变量。

我想解析它并将2014存储到名为year的INT变量中,然后将02存储到名为month的INT变量中,并将22存储到当前INT变量中。

有人可以告诉我一个如何做到这一点的例子,这会很棒。

3 个答案:

答案 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

这是假设您知道将以正确的顺序解析格式。当然,如果您需要所有可能的异常处理,您必须检查它。