如何解析输入并将其值存储到“int”变量中[关闭]

问题描述 投票:0回答:3

我想接受用户输入,例如日期“2014 02 22 21 14”。请注意,空格分隔要存储的每个变量。

我想解析它并将 2014 存储到一个名为

int
year
变量中,然后将 02 存储到一个名为
int
month
变量中,并将 22 存储到
int
变量
day
中。

有人可以向我展示一个如何执行此操作的示例吗?那就太好了。

java
3个回答
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
投票

使用分割(正则表达式):

输入

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);

这是数字年份

享受编码的乐趣 -查理


0
投票

要添加到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

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

© www.soinside.com 2019 - 2024. All rights reserved.