Java 逻辑/语义错误
我正在努力创造一个条件Java 逻辑/语义错误,java,html,java.util.scanner,Java,Html,Java.util.scanner,我正在努力创造一个条件 如果发票号小于1000,请强制将发票号设置为0 如果月份字段小于1或大于12,则强制月份字段为0 如果日期字段小于1或大于31,则强制将日期字段设置为0 如果“年份”字段小于2011或大于2017,请将“年份”字段强制为0 但当我尝试运行它时,它会强制所有字段为0,即使我为变量输入了正确的值: 请键入您的发票号码:…1111 余额应在哪一个月到期?(从1-12中选择)。。。1. 余额在哪一天到期?(从1-31中选择)。。。。12 余额在哪一年到期?(选择2011-2017
请键入您的发票号码:…1111
余额应在哪一个月到期?(从1-12中选择)。。。1.
余额在哪一天到期?(从1-31中选择)。。。。12
余额在哪一年到期?(选择2011-2017年)…2011年
您的发票号为0,您的到期余额为0/0/0。
公共类发票
{
私家旅馆;
私人双包房;
私有INTM;
私人int d;
私人int yy;
公共发票()
{
超级();
刚毛;
getInNum();
塞布尔杜(巴尔杜);
setM(m);
setD(d);
setYy(yy);
}
公共国际酒店()
{
返回inNum;
}
公共空间塞蒂努姆(内因努姆)
{
if(inNum<1000)
这个inNum=0;
其他的
this.inNum=inNum;
}
公共双getBalDue()
{
返回巴尔杜;
}
公共空间退避(双倍保释)
{
this.balDue=balDue;
}
公共整数getM()
{
返回m;
}
公共无效setM(整数m)
{
如果(m<1 | | m>12)
这是m=0;
其他的
这个,m=m;
}
公共整数getD()
{
返回d;
}
公共无效设置(int d)
{
如果(d<1 | | d>31)
这是d=0;
其他的
这个。d=d;
}
公共整数getYy()
{
返回yy;
}
公共无效设置yy(整数yy)
{
如果(年<2011年|年>2017年)
这是m=0;
其他的
this.yy=yy;
}
public void displayInfo()
{
内因努姆;
int m,d,yy;
扫描仪键盘=新扫描仪(System.in);
系统输出打印(“请键入您的发票号码:”);
inNum=keyboard.nextInt();
系统输出
.打印(“余额应在哪个月到期?(从1-12中选择)”;
m=键盘.nextInt();
系统输出
.打印(“余额到期日?(从1-31中选择)”;
d=键盘.nextInt();
系统输出
.print(“余额应在哪一年到期?(从2011-2017年中选择)”;
yy=键盘.nextInt();
System.out.println(“您的发票号是”+getInNum()
+您的到期余额在“+getM()+”/“+getD()上
+“/”+getYy()+”;
}
公共静态void main(字符串[]args)
{
发票=新发票();
displayInfo();
}
}
您为该类制作了所有漂亮的setter,但没有使用它们
Scanner keyboard = new Scanner(System.in);
System.out.print("Please type your invoice number: ");
setInNum(keyboard.nextInt());
System.out.print("What month is the balance due?(Choose from 1-12) ");
setM(keyboard.nextInt());
System.out.print("What day is the balance due?(Choose from 1-31) ");
setD(keyboard.nextInt());
System.out.print("What year is the balance due? (Choose from 2011-2017) ");
setY(keyboard.nextInt());
System.out.println("Your invoice number is " + getInNum() + " and your balance due is on " + getM() + "/" + getD() + "/" + getYy() + ".");
你为全班做了这么多漂亮的二传手,却没用
Scanner keyboard = new Scanner(System.in);
System.out.print("Please type your invoice number: ");
setInNum(keyboard.nextInt());
System.out.print("What month is the balance due?(Choose from 1-12) ");
setM(keyboard.nextInt());
System.out.print("What day is the balance due?(Choose from 1-31) ");
setD(keyboard.nextInt());
System.out.print("What year is the balance due? (Choose from 2011-2017) ");
setY(keyboard.nextInt());
System.out.println("Your invoice number is " + getInNum() + " and your balance due is on " + getM() + "/" + getD() + "/" + getYy() + ".");
你为全班做了这么多漂亮的二传手,却没用
Scanner keyboard = new Scanner(System.in);
System.out.print("Please type your invoice number: ");
setInNum(keyboard.nextInt());
System.out.print("What month is the balance due?(Choose from 1-12) ");
setM(keyboard.nextInt());
System.out.print("What day is the balance due?(Choose from 1-31) ");
setD(keyboard.nextInt());
System.out.print("What year is the balance due? (Choose from 2011-2017) ");
setY(keyboard.nextInt());
System.out.println("Your invoice number is " + getInNum() + " and your balance due is on " + getM() + "/" + getD() + "/" + getYy() + ".");
你为全班做了这么多漂亮的二传手,却没用
Scanner keyboard = new Scanner(System.in);
System.out.print("Please type your invoice number: ");
setInNum(keyboard.nextInt());
System.out.print("What month is the balance due?(Choose from 1-12) ");
setM(keyboard.nextInt());
System.out.print("What day is the balance due?(Choose from 1-31) ");
setD(keyboard.nextInt());
System.out.print("What year is the balance due? (Choose from 2011-2017) ");
setY(keyboard.nextInt());
System.out.println("Your invoice number is " + getInNum() + " and your balance due is on " + getM() + "/" + getD() + "/" + getYy() + ".");
这是失败的,因为对
displayInfo
的调用发生在对所有setter方法的调用之后。这需要先发生,否则二传手就没什么事可做了
我认为在构造函数中调用那些setter方法是错误的。一旦有了需要传递给它的值,就需要调用每个函数
因此,您可能为输入的每个值都有一个局部变量,然后将其传递给setter
int invoiceNumber = keyboard.nextInt();
setInNumber(invoiceNumber);
依此类推所有其他字段。这是失败的,因为对
displayInfo
的调用发生在对所有setter方法的调用之后。这需要先发生,否则二传手就没什么事可做了
我认为在构造函数中调用那些setter方法是错误的。一旦有了需要传递给它的值,就需要调用每个函数
因此,您可能为输入的每个值都有一个局部变量,然后将其传递给setter
int invoiceNumber = keyboard.nextInt();
setInNumber(invoiceNumber);
依此类推所有其他字段。这是失败的,因为对
displayInfo
的调用发生在对所有setter方法的调用之后。这需要先发生,否则二传手就没什么事可做了
我认为在构造函数中调用那些setter方法是错误的。一旦有了需要传递给它的值,就需要调用每个函数
因此,您可能为输入的每个值都有一个局部变量,然后将其传递给setter
int invoiceNumber = keyboard.nextInt();
setInNumber(invoiceNumber);
依此类推所有其他字段。这是失败的,因为对
displayInfo
的调用发生在对所有setter方法的调用之后。这需要先发生,否则二传手就没什么事可做了
我认为在构造函数中调用那些setter方法是错误的。一旦有了需要传递给它的值,就需要调用每个函数
因此,您可能为输入的每个值都有一个局部变量,然后将其传递给setter
int invoiceNumber = keyboard.nextInt();
setInNumber(invoiceNumber);
其他所有领域都是如此