在将Date值作为字符串从用户获取后,尝试将String解析为Date时抛出异常。 为了存储Date值(或),应该做些什么来检索日期。
Medicine.java
package Medicine;
import java.util.Date;
public abstract class Medicine {
public int price;
Date expiryDate;
Medicine() {
}
Medicine(int price, Date expiryDate) {
this.price=price;
this.expiryDate=expiryDate;
}
public void getDetails() {
System.out.println("The price is "+this.price);
System.out.println("The expiry Date for the product is "+this.expiryDate);
}
abstract void displayLabel();
}
Tablet.java
package Medicine;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Tablet extends Medicine{
Date expDate;
void displayLabel() {
System.out.println("Store in a cool and dry place");
}
Tablet() {
}
Tablet(int price, Date expDate) {
this.price=price;
this.expDate=expDate;
}
}
执行类
int price;
Date expDate=new Date();;
Scanner reader = new Scanner(System.in);
Medicine[] medicineArray =new Medicine[5];
DateFormat df=new SimpleDateFormat("dd-mm-yyyy");
System.out.println("Enter Tablet's price");
price = reader.nextInt();
System.out.println("Enter Tablet's expiry date in yyyy-dd-mm format");
String stringExpDate=reader.nextLine();
try {
expDate=df.parse(stringExpDate);
}
catch(Exception e){
System.out.println("Date format not parsed");
}
Medicine med1=new Tablet(price,expDate);
med1.getDetails();
med1.displayLabel();
输出:
输入平板电脑的价格
23
以yyyy-dd-mm格式输入平板电脑的到期日期
未解析日期格式
价格是23
产品的到期日期为空
答案 0 :(得分:1)
你的例子说
以yyyy-dd-mm格式输入平板电脑的到期日期
但您的格式为new SimpleDateFormat("dd-mm-yyyy");
。
首先确定哪一种是您真正想要的格式,然后将mm
(分钟)更改为MM
(月)。
您也不需要在Date expDate;
课程中重新定义Tablet
,因为Medicine
已经expiryDate
继承了Tablet
。< / p>
答案 1 :(得分:0)
LocalDate.parse( "2016-01-23" )
Kayaman的回答是正确的。您的格式代码不正确。请务必仔细阅读文档。
此外,您正在使用现在由java.time类取代的旧的麻烦遗留日期类。其中包括LocalDate
表示仅限日期的值,没有时间和没有时区。
您的输入字符串格式符合ISO 8601标准。因此无需指定格式化模式。
LocalDate ld = LocalDate.parse( "2016-01-23" );
答案 2 :(得分:-1)
你在平板电脑和医学课上都有一些问题。
从这里试试:
abstract public class Medicine
{
public int price;
public Date expiryDate;
Medicine(int price, Date expiryDate)
{
this.price=price;
this.expiryDate=expiryDate;
}
public void getDetails() {
System.out.println("The price is "+this.price);
System.out.println("The expiry Date for the product is "+this.expiryDate);
}
abstract void displayLabel();
}
在这里
public class Tablet extends Medicine {
Date expDate;
void displayLabel() {
System.out.println("Store in a cool and dry place");
}
public Tablet(int price, Date expDate)
{
super(price, expDate);
}
}
下一部分应该很简单!
答案 3 :(得分:-1)
试试这个:
public class Tablet extends Medicine{
//Date expDate;
void displayLabel() {
System.out.println("Store in a cool and dry place");
}
Tablet() {
}
Tablet(int price, Date expDate) {
this.price=price;
this.expiryDate=expDate;
}
}
int price;
Date expDate=new Date();
Scanner reader = new Scanner(System.in);
Medicine[] medicineArray =new Medicine[5];
DateFormat df=new SimpleDateFormat("yyyy-dd-mm");
System.out.println("Enter Tablet's price");
price = reader.nextInt();
System.out.println("Enter Tablet's expiry date in yyyy-dd-mm format");
String stringExpDate=reader.next();
try {
expDate=df.parse(stringExpDate);
}
catch(Exception e)
{
System.out.println("Date format not parsed");
}
Medicine med1=new Tablet(price,expDate);
med1.getDetails();
med1.displayLabel();