【发布时间】:2014-10-16 05:28:39
【问题描述】:
我创建了一个名为 Invoice 的类,其中包含发票编号、到期余额和 三个字段表示余额到期的月、日和年。 创建一个接受所有五个数据字段的值的构造函数。内 构造函数,使用以下内容将每个参数分配给适当的字段 例外:
如果发票编号小于 1000,则将发票编号强制为 0。
如果月份字段小于 1 或大于 12,则强制月份字段为 0。
如果 day 字段小于 1 或大于 31,则强制 日期字段为 0。
- 如果年份字段小于 2011 年或大于 2017 年,则强制年份字段为 0。
在 Invoice 类中,包含一个 display 方法,用于显示一个 发票对象。
import java.util.Scanner;
public class Invoice
{
private int inNum;
private double balDue;
private int m;
private int d;
private int yy;
public void setinNum(int inv)
{
inNum = inv;
if(inv < 1000)
inv = 0;
}
public int getinNum()
{
return inNum()
}
public void setbalDue(double bal)
{
balDue = bal;
}
public double getbalDue()
{
return balDue()
}
public void setm(int month)
{
m = month;
if(month < 1 || month >12)
month = 0;
}
public int getm()
{
return m()
}
public void setd(int days)
{
d = days;
if(days < 1 || days > 31)
days = 0;
}
public int getd()
{
return d()
}
public void setyy(int years)
{
yy = years;
if(years < 2011 || years > 2017)
years = 0;
}
public int getyy()
{
return yy()
}
public static void main(String[] args)
{
double inNum;
int m, d, yy;
Scanner keyboard = new Scanner(System.in);
System.out.print("Please type your invoice number: ");
inNum = keyboard.nextDouble();
System.out.print("What month is the balance due?(Choose from 1-12) ");
m = keyboard.nextInt();
System.out.print("What day is the balance due?(Choose from 1-31) ");
d = keyboard.nextInt();
System.out.print("What year is the balance due? (Choose from 2011-2017) ");
yy = keyboard.nextInt();
if((inNum >= 1000) && (m <= 12 && d <= 31 && yy >= 2011) && yy <= 2017)
System.out.print("Your invoice number is " + inNum + " and your balance due is on " + m + "/" + d + "/" + yy);
else
if((inNum >= 1000) && (m<=12 || m <= 0) && (d <= 31 && yy >= 2011) && yy <= 2017)
System.out.println("Error! Invalid Month Input.");
else
System.out.println("Error!");
}
}
现在我有一个逻辑错误,我试图强制月份输出这个:
如果发票编号小于 1000,则将发票编号强制为 0。
如果月份字段小于 1 或大于 12,则强制月份字段为 0。
如果 day 字段小于 1 或大于 31,则强制 日期字段为 0。
- 如果年份字段小于 2011 年或大于 2017 年,则强制年份字段为 0。
但我不知道如何将字段强制为 0。这是我尝试运行时的输出:
请输入您的发票号码:999
余额是几月份到期的?(从1-12中选择)12
余额是哪一天到期?(从 1-31 中选择)2012
余额是哪一年到期的? (从2011-2017中选择)12
您的发票编号是 999.0,您的应付余额是 2012 年 12 月 12 日
【问题讨论】:
-
inNum();不是方法
标签: java