gpt4 book ai didi

java - Array 中的某些项目可以正常工作,但有些则不行

转载 作者:行者123 更新时间:2023-12-01 18:16:21 25 4
gpt4 key购买 nike

我在 main 方法中创建了一个数组。然后将其复制到另一个类中的数组中。然后添加该方法所需的所有信息,并尝试使用产品的所有 3 个代码(Aa/1234、Bb/1234、Cc/1234)。奇怪的是,第 1 个和第 3 个没有抛出异常,但第 2 个却抛出异常。请指出什么是错误的。谢谢。

    try
{
Product product1 = new Product("Aa/1234", 20);
Product product2 = new Product("Bb/1234", 30);
Product product3 = new Product("Cc/1234", 40);
Product [] productRange = {product1, product2, product3};

ElectronicsEquipmentSupplier management =
new ElectronicsEquipmentSupplier(1,12,productRange);

System.arraycopy(productRange, 0, management.getProductRange(), 0,
productRange.length);

EducationalInstitutionDetails newInstitution =
new EducationalInstitutionDetails("ESE-1234",
"SE", myAddress, 1000, "UEA");

management.addNewCustomer(newInstitution);
management.addNewPurchaseOrder("21/01/12", "ESE-1234", "Bb/1234", 50);
}
catch(Exception e)
{
System.out.println(e);
}

方法:

 public void addNewPurchaseOrder(String dateStr, String customerID, 
String productCode, int qty) throws IncorrectPurchaseOrderException
{

Product foundProduct = null;

for(int i = 0; i < productRange.length; i++)
{
if(productRange[i].getProductCode().equals(productCode))
{
foundProduct = productRange[i];
break;
}
else
i++;
}
if(foundProduct == null)
throw new IncorrectPurchaseOrderException("Product code is not in"
+ " the product range!");

如果我在相同的方法中使用 boolean 值,则是另一回事。同样的问题,请问哪里出了问题?

    int i = 0;
boolean match = productRange[i].getProductCode().equals(productCode);
while(i < productRange.length)
{
if(match)
foundProduct = productRange[i];
break;
else
i++;
}
if(!match)
throw new IncorrectPurchaseOrderException("Product code is not in"
+ " the product range!");

谢谢!

异常(exception):

public class IncorrectPurchaseOrderException extends Exception

{ 公共(public) In CorrectPurchaseOrderException(字符串错误订单) { super (错误的顺序); }}

最佳答案

不确定这是否是它,但对我来说看起来很可疑:

for(int i = 0; i < productRange.length; i++)
{
if(productRange[i].getProductCode().equals(productCode))
{
foundProduct = productRange[i];
break;
}
else
i++;
}

基本上每次执行 for 循环时,如果不匹配,则将 i 递增两次。一旦排队

 for(int i = 0; i < productRange.length; i++)

如果未识别为具有产品代码,则再重试一次。尝试删除 else i++,它似乎是多余的,并且可能导致问题。

编辑,是的,我认为它会导致它跳过检查所有其他索引,因此,如果数组中的所有内容都是唯一的,那么有一半的时间将无法找到正确的产品代码,具体取决于它是否落在奇数或偶数上指数。

关于java - Array 中的某些项目可以正常工作,但有些则不行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29266104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com