Java 我想让打印机打印,直到帐户中的余额不足以打印作业为止
问题是我一直让余额为负数,它执行需要取出钱的部分,但我已经准备好的“如果”语句应该可以防止这一点。我是编程新手,如果这是愚蠢的,我很抱歉 以下是我的主要观点:Java 我想让打印机打印,直到帐户中的余额不足以打印作业为止,java,variables,methods,instance,private,Java,Variables,Methods,Instance,Private,问题是我一直让余额为负数,它执行需要取出钱的部分,但我已经准备好的“如果”语句应该可以防止这一点。我是编程新手,如果这是愚蠢的,我很抱歉 以下是我的主要观点: public class PrinterAccount { private int balance; public void topUp(int amount) { balance += amount; } public int getBalance() {
public class PrinterAccount
{
private int balance;
public void topUp(int amount)
{
balance += amount;
}
public int getBalance()
{
return balance;
}
public boolean printDocument(int numPages, boolean isDoubleSided)
{
if (isDoubleSided)
{
if(numPages % 2 == 0)
{
int b = 0;
b = b - ((numPages/2)*5);
if (balance > b)
{
balance -= ((numPages/2) * 5);
return true;
}
else
{
return false;
}
}
else
{
numPages = numPages + 1;
int a = 0;
a = a - ((numPages/2)*5);
if (balance > a)
{
balance -= ((numPages/2) * 5);
return true;
}
else
{
return false;
}
}
}
else
{
int c = 0;
c = c - (numPages*5);
if (balance > c)
{
balance -= (numPages*5);
return true;
}
else
{
return false;
}
}
}
}
这是我的测试:
public class PrinterAccountTest
{
public static void main(String[] args)
{
// Create an object of class PrinterAccount
PrinterAccount myprinterAccount = new PrinterAccount();
// Add 10 pounds credit (1000 pence)
myprinterAccount.topUp(1000);
// **************TEST 1************************
// Print a 15-page document, single-sided, should cost 75p
boolean res = myprinterAccount.printDocument(15, false);
// The document should have printed successfully
if (res)
System.out.println("The document printed successfully");
else
System.out.println("The document failed to print: not enough credit.");
// Display the remaining balance: should be 925
System.out.println("Remaining balance is " + myprinterAccount.getBalance());
// **************TEST 2************************
// Print a 20-page document (even number of pages), double-sided, should cost 50p
res = myprinterAccount.printDocument(20, true);
// The document should have printed successfully
if (res)
System.out.println("The document printed successfully");
else
System.out.println("The document failed to print: not enough credit.");
// Display the remaining balance: should be 875
System.out.println("Remaining balance is " + myprinterAccount.getBalance());
// **************TEST 3************************
// Print a 7-page document (odd number of pages), double-sided, should cost 20p
res = myprinterAccount.printDocument(7, true);
// The document should have printed successfully
if (res)
System.out.println("The document printed successfully");
else
System.out.println("The document failed to print: not enough credit.");
// Display the remaining balance: should be 855
System.out.println("Remaining balance is " + myprinterAccount.getBalance());
// **************TEST 4************************
// Print a 200-page document, single-sided, should cost 1000p
res = myprinterAccount.printDocument(200, false);
// Should get a message saying the document failed to print
if (res)
System.out.println("The document printed successfully");
else
System.out.println("The document failed to print: not enough credit.");
// Display the remaining balance: should be 855
System.out.println("Remaining balance is " + myprinterAccount.getBalance());
}
}
这是我运行代码时得到的结果:
The document printed successfully
Remaining balance is 925
The document printed successfully
Remaining balance is 875
The document printed successfully
Remaining balance is 855
The document printed successfully
Remaining balance is -145
但我需要它来显示:
The document printed successfully
Remaining balance is 925
The document printed successfully
Remaining balance is 875
The document printed successfully
Remaining balance is 855
The document failed to print: not enough credit.
Remaining balance is 855
因为您的
余额
将始终大于a、b、c,因为c将为负值,余额将为正值余额
将始终为真。尝试更改“打印文档”方法中此行的逻辑:
int c = 0;
c = c - (numPages*5);
if (balance > c) ...
变量c将始终具有负值。我想你想加(numPages*5)而不是减去它