好吧,基本上我做了一个自动售货机程序。当用户购买等于或大于其成本的商品时,该商品的库存将耗尽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
要做到这一点,这里是我使用的循环:私有的空CheckInventoryActionPerform(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)
等。
我不知道这些错误告诉我什么。但我已经做了一些事情来尝试纠正这一点。首先,我运行了调试功能,但没有找到任何内容。我仔细检查了每个int stock、int stock 2、int stock 3等是否为循环上方的每个部分正确定义,等等。
这是我在自动售货机上可以买到的每一部分的代码。基本上每个项目都是复制和粘贴的,除了我更改价格和调用图像:如果需要,我还可以粘贴更多代码。Lipton和Fanta:
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);
}
}
好的,请看下面的代码:
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]);
}
变量“i”将从0变为库存。长度-1,包括在内。例如,以最极端的情况为例
i = inventory.length()-1
现在,让我们看看您的程序将执行什么操作。
它首先从打印开始
The inventory of Liptop is: inventory[inventory.length-1]
这里没什么问题。然而,下一行是程序开始失败的地方。
i 2将是库存。长度1!显然,这超出了库存的数组索引。
您循环所有数组并获取下一个位置进行比较,当您在数组末尾并转到下一个位置时,您会得到java.lang.ArrayIndexOutOfBoundsException: 6
for (int i=0; i<inventory.length-1; i++){
if(inventory[i]> inventory[i+1]){ //here
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]);
}
你在犯同样的错误(检查i x)
您使用的是哪个版本的java?
我正在制作一个数组,它从1-100生成随机数。然后,在最后,我将从列表中输出最大值和最小值。但是,我不知道如何找到/调用max和min,我尝试使用math方法函数(如math.min()),但我认为它对数组不起作用。这是我的代码(下划线是我想要调用最大值和最小值的地方,但我不知道如何调用)。 }
问题内容: 我正在寻找一种方法来计算等于组的最小或最大项目数。我每隔几天收到一次商品,每两周输入一次。我需要查看每个EntryDate的最小值和最大值ReceivedDate,以及最小值和最大值处的项目计数。在MS Access中使用SQL。 输入 当前查询 电流输出 期望的输出 问题答案: 我不知道MS Access是否允许这样的子查询。如果这不起作用,请让我知道,我将删除答案。否则:
在Linux中使用read()syscall从任何源(文件、套接字、管道)读取数据时,是否存在可以返回的最小数据量(在阻塞模式下)?或者系统调用甚至可以返回1字节? 当我想从管道中读取单个int(4或8个字节)时,我是否仍然需要检查read()的返回值以查看接收到的字节是否少于sizeof(int)字节?
计算newArr数组所有对象中arr二维数组,比较后返回其中的[[最小值,最小值],[最大值,最大值]]; 要这种结果[[39.867638888888884, 115.39333333333333], [50.97152777777777, 120.31527777777778]]
问题内容: 上下文:我正在构建一个读取rss feed并在后台更新/检查feed的小站点。我有一个数组来存储要显示的数据,另一个数组来存储已显示的记录的ID。 问题:在事情变慢或变慢之前,数组可以在Javascript中容纳多少个项目。我没有对数组进行排序,但是正在使用jQuery的inArray函数进行比较。 该网站将保持运行状态,并进行更新,并且不太可能经常重启/刷新浏览器。 如果我想从数组中
问题内容: 我最近一直在复制和移动大量文件(约40万个)。我知道在Bash命令行上可以扩展的参数数量有限制,因此我一直在使用xargs来限制产生的数量。 出于好奇,我想知道我可以使用的最大参数数目是多少,我发现这篇文章说它是依赖于系统的,我可以运行以下命令来找出: 令我惊讶的是,我回来的答案是: 刚刚超过 260万 。正如我所说,我要处理的文件数量要少得多,大约为40万。我绝对需要使用移动和复制这