2017-10-14 84 views
1

用户输入格式为XX/XX/XXXX的日期,并使用分隔符来挑选输入中的整数,但我无法弄清楚如何在不将另一个/放在末尾的情况下获取year变量的输入。我该如何去争取那一年的变数?为什么扫描仪不能在没有/末的情况下选择我的年份变量?

在此先感谢

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

回答

2

我如何去获得那年的变量?

你可以用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(); 
相关问题