java - 为什么扫描仪不会在末尾没有/的情况下获取我的年份变量?

标签 java java.util.scanner delimiter

用户正在以 XX/XX/XXXX 格式输入日期,我使用分隔符来挑选输入中的整数,但我无法弄清楚如何在不放置另一个/的情况下获取年份变量输入结束。我如何获取该年份变量?

提前致谢

package formatting_problem;

import java.util.Scanner;
public class DateFormatter {
public static void main(String[] args) {
    Integer day = 0;
    Integer month = 0;
    Integer year = 0;
    Integer test = null;
    Scanner input = new Scanner(System.in).useDelimiter("/");
    System.out.println("Enter a date in the format XX/XX/XXXX to be formatted to Month Day,Year");
    while (input.hasNext()){
        month = input.nextInt();
        day = input.nextInt();
        year = input.nextInt();
        System.out.println();
    }

最佳答案

How do I go about getting that year variable?

您可以只使用String.split():

String tokens[] = input.split("/");      //where input is a String
int month = Integer.parseInt(tokens[0]);
int day = Integer.parseInt(tokens[1]);
int year = Integer.parseInt(tokens[2]);

注意:您可以只使用原始数据类型 int 而不是其包装类 Integer

<小时/>

回答你的问题,那是因为你分配的分隔符只是一个正斜杠。在Java中,默认情况下,换行符也是分隔符之一。但是,在您重新定义分隔符时,它被省略了。

要修复此问题,请同时包含换行符:

Scanner input = new Scanner(System.in).useDelimiter("/|\\n");

您也可以删除 while 循环,只需:

int month = input.nextInt();
int day = input.nextInt();
int year = input.nextInt();

关于java - 为什么扫描仪不会在末尾没有/的情况下获取我的年份变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46747199/

相关文章:

java - 使用 java.util.Scanner 将网站数据读取到 Java 变量中

arrays - 捕获 find 的输出。 -print0 到 bash 数组

Java Unicode 问题(我认为)

Python:解析具有各种字段计数的冒号分隔文件

parsing - 如何以编程方式猜测 CSV 文件是逗号分隔还是分号分隔

java - 使用 @BeforeClass 初始化 vs java 中的急切初始化

java - 当我在 eclipse DevMode 和 Tomcat 7 服务器上启动 gwt-rpc 项目时,URL 不同,所以我遇到了 PayPal 问题

java - 关于负无穷大的问题

java - 基于 SOAP 的 Web 服务中的身份验证和角色 (Java)

java - 为什么我的代码中有一个InputMismatchException