Хорошо, поэтому я сделал программу для торгового автомата. Когда пользователь покупает предмет, равный или превышающий его стоимость, инвентарь предмета истощается на 1. Фургон предмета можно купить до трех раз, пока запас не закончится. В этот момент JButton исчезнет, и на предмет нельзя будет нажать или купить. Чтобы добавить сложности, я добавил кнопку «Проверить общий инвентарь». То, что должно произойти при нажатии, - это программа, распечатывающая наименьшее и наибольшее количество товара.
Например:
Inventory of Liton: 0
Inventory of Fanta: 1
Inventory of Pepsi: 2
Inventory of Gum: 3
Inventory of Seeds:3
Inventory of Chocolate: 3
Для этого используется l oop, который я использовал: private void CheckInventoryActionPerformed (java .awt.event.ActionEvent evt) {
int inventory[]={stock, stock2, stock3, stock4, stock5, stock6};
int temp;
boolean fixed= false;
while(fixed==false){
fixed=true;
for (int i=0; i<inventory.length-1; i++){
if(inventory[i]> inventory[i+1]){
temp= inventory[i+1];
inventory [i+1]= inventory[i];
inventory[i]= temp;
fixed= false;
}
}
}
for (int i=0; i<inventory.length; i++){
System.out.println("The inventory of Lipton is:" + inventory[i]);
System.out.println("The inventory of Fanta is:" + inventory[i+2]);
System.out.println("The inventory of Pepsi is:" +inventory[i+3]);
System.out.println("The inventory of Gum is:" +inventory[i+4]);
System.out.println("The inventory of Seeds is:" +inventory[i+5]);
System.out.println("The inventory of Choco is:" +inventory[i+6]);
}
}
Хотя есть несколько проблем ... Мне было интересно, если кто-нибудь может помочь мне, потому что я не знаю, в чем проблема, несмотря на многочисленные попытки ее исправить. Когда я нажимаю только на Fanta и покупаю один (так что инвентарь Fanta должен быть равен 2), инвентарь для Lipton уменьшается, когда я не нажимаю на него. «Инвентарь шоколада: и количество инвентаря» также не печатается. Есть также много других ошибок, таких как
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 6
at finalvending.finalvendingclass.CheckInventoryActionPerformed(finalvendingclass.java:623)
at finalvending.finalvendingclass.access$600(finalvendingclass.java:18)
at finalvending.finalvendingclass$7.actionPerformed(finalvendingclass.java:129)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
et c.
Я не понимаю, что говорят мне эти ошибки. Но я сделал несколько вещей, чтобы попытаться исправить это. Во-первых, у меня запущена функция отладки, в которой ничего не найдено. Я дважды проверил каждый int склад, int stock2, int stock3, et c. правильно определено для каждого раздела выше l oop, et c.
Вот код, который я использую для каждого раздела того, что вы можете купить в торговом автомате. По сути, каждый элемент копируется и вставляется, за исключением того, что я изменяю цену и вызываемое изображение: я также могу вставить больше кода, если это потребуется. Липтон и Фанта:
int stock=3;
private void liptonActionPerformed(java.awt.event.ActionEvent evt) {
final JPanel panel = new JPanel();
DecimalFormat dollarFormat = new DecimalFormat(" $#,##0.00");
String inputstring;
double input, change;
inputstring= JOptionPane.showInputDialog("Please enter your payment: $");
input= Double.parseDouble(inputstring);
change= input-1;
if (input<1)
{
JOptionPane.showMessageDialog(panel, " You do not have enough money to purchase this item", "INSUFFICIENT FUNDS",
JOptionPane.WARNING_MESSAGE);
}
else if (input>1)
{
JOptionPane.showInputDialog("You have purchased a Lipton Tea. Here is your change:" +(dollarFormat.format(change)));
stock--;
ImageIcon liptonIcon= new ImageIcon("usethislipton.png");
Image liptonImage= liptonIcon.getImage();
Image modifiedliptonImage= liptonImage.getScaledInstance(100,150, java.awt.Image.SCALE_SMOOTH);
liptonIcon= new ImageIcon (modifiedliptonImage);
JOptionPane.showMessageDialog(panel, "Lipton Tea", "Here is your drink! Enjoy!", JOptionPane.INFORMATION_MESSAGE, liptonIcon);
}
else if (input==1)
{
JOptionPane.showInputDialog("You have purchased a Lipton Tea.");
stock--;
ImageIcon liptonIcon= new ImageIcon("usethislipton.png");
Image liptonImage= liptonIcon.getImage();
Image modifiedliptonImage= liptonImage.getScaledInstance(100,150, java.awt.Image.SCALE_SMOOTH);
liptonIcon= new ImageIcon (modifiedliptonImage);
JOptionPane.showMessageDialog(panel, "Lipton Tea", "Here is your drink! Enjoy", JOptionPane.INFORMATION_MESSAGE, liptonIcon);
}
if (stock==1)
{
JOptionPane.showMessageDialog(panel, " There is only 1 Lipton Tea remaining! Restock recommnended", "WARNING",
JOptionPane.WARNING_MESSAGE);
}
else if (stock==0)
{
JOptionPane.showMessageDialog(panel, "Sorry, Lipton Tea is out of stock", "",
JOptionPane.WARNING_MESSAGE);
lipton.setVisible(false);
}
}
int stock2=3;
private void fantaActionPerformed(java.awt.event.ActionEvent evt) {
final JPanel panel = new JPanel();
DecimalFormat dollarFormat = new DecimalFormat(" $#,##0.00");
String inputstring;
double input, change;
inputstring= JOptionPane.showInputDialog("Please enter your payment: $");
input= Double.parseDouble(inputstring);
change= (input-1.25);
if (input<1.25)
{
JOptionPane.showMessageDialog(panel, " You do not have enough money to purchase this item", "INSUFFICIENT FUNDS",
JOptionPane.WARNING_MESSAGE);
}
else if (input>1.25)
{
JOptionPane.showInputDialog("You have purchased a Fanta. Here is your change" +(dollarFormat.format(change)));
stock2--;
ImageIcon fantaIcon= new ImageIcon("finalfanta2.png");
Image fantaImage= fantaIcon.getImage();
Image modifiedfantaImage= fantaImage.getScaledInstance(100,150, java.awt.Image.SCALE_SMOOTH);
fantaIcon= new ImageIcon (modifiedfantaImage);
JOptionPane.showMessageDialog(panel, "Fanta", "Here is your drink! Enjoy", JOptionPane.INFORMATION_MESSAGE, fantaIcon);
}
else if (input==1.25)
{
JOptionPane.showInputDialog("You have purchased a Fanta.");
stock2--;
ImageIcon fantaIcon= new ImageIcon("finalfanta2.png");
Image fantaImage= fantaIcon.getImage();
Image modifiedfantaImage= fantaImage.getScaledInstance(100,150, java.awt.Image.SCALE_SMOOTH);
fantaIcon= new ImageIcon (modifiedfantaImage);
JOptionPane.showMessageDialog(panel, "Fanta", "Here is your drink! Enjoy", JOptionPane.INFORMATION_MESSAGE, fantaIcon);
}
if (stock2==1)
{
JOptionPane.showMessageDialog(panel, " There is only 1 Fanta remaining! Restock recommnended", "WARNING",
JOptionPane.WARNING_MESSAGE);
}
else if (stock2==0)
{
JOptionPane.showMessageDialog(panel, "Sorry, Fanta is out of stock", "",
JOptionPane.WARNING_MESSAGE);
fanta.setVisible(false);
}
}