读取类别“日期”的用户输入

时间:2019-05-01 17:09:03

标签: java

您好,我是JAVA的新手,我一直在网上搜索这一点,但找不到解决方案。

因此,我尝试读取用户输入并将其存储在矢量中,但是其中之一包括日期输入。现在,我创建了一个名为“ Date”的类,因此我必须使用Date作为类型,但是我不知道要把nextLine或NextInt放在什么位置才能读取。

public static void edit(){
      viewAll();
      Scanner in = new Scanner (System.in);
      int i;


      System.out.println("Enter the Animal Code you wish to edit:");
      String cd = in.nextLine();

      if (cd == code){

       System.out.print("What is the animal's type? "); 
        String type2 = in.nextLine();
        n.add(type2);

       System.out.print("Enter the animal's unique code - Format: (XXXX111)");
       String code2 = in.nextLine();
       n.add(code2);
       //unique
       //XXXX102
       System.out.print("Enter the animal's weight:" ); 
       int weight2 = in.nextInt();
       n.add(weight2);

       System.out.print("Enter the date that the animal was obtained on: (dd/mm/yyyy)");
       Date date2 = in.next();

       list.addAll(n);

       //use date class
       System.out.print("Enter the animal's room and section (location) in the park:");
       String location2 = in.nextLine();
       n.add(location2);



       System.out.println();
       System.out.println("Changes have been saved");
       System.out.println();

     }

2 个答案:

答案 0 :(得分:3)

tl; dr

请勿使用Date类。

LocalDate.parse( "2019-01-23" )

详细信息

可怕的java.util.Date类在多年前被JSR 310中定义的 java.time 类所取代。具体来说,java.time.Instant替换了Date

如果您想要一个仅日期的值,没有日期和时区,请使用LocalDate

默认情况下, java.time 类在解析/生成字符串时使用标准ISO 8601格式。对于仅日期,则为YYYY-MM-DD。

String input = "2019-01-23" ;
LocalDate ld = LocalDate.parse( input ) ;

如果您想支持用户输入的其他格式,请search Stack Overflow了解DateTimeFormatter类及其ofLocalizedDate方法。已经覆盖了很多次。

DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( Locale.CANADA_FRENCH ) ;
String output = LocalDate.parse( "2019-01-23" ).format( f ) ; 
  

1月23日。 2019

答案 1 :(得分:2)

首先导入您需要的库,包括日期:

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

然后您可以将输入作为字符串输入,并通过执行以下操作将其转换为Date:

    DateFormat formatter = new SimpleDateFormat("dd/mm/yyyy");
    String dateString = in.nextLine();
    Date animalDate = formatter.parse(dateString);

您将不需要创建Date类,而只需创建java.util库即可。