您好,我是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();
}
答案 0 :(得分:3)
请勿使用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库即可。