некоторые ошибки с кодом интернет-магазина [дубликата]

Попробуйте это. Я знаю, что вопрос несколько старый, но это другой подход к проблеме.

Я также заметил, что проблема возникает чуть выше поля password.

Я попробовал как методы, подобные

<form autocomplete="off"> и <input autocomplete="off">, но ни один из них не работал для меня.

Поэтому я исправил его с помощью нижеприведенного фрагмента - просто добавил другое текстовое поле чуть выше типа пароля (f5).

Что-то вроде этого:

<input type="text" name="prevent_autofill" id="prevent_autofill" value="" style="display:none;" />
<input type="password" name="password_fake" id="password_fake" value="" style="display:none;" />
<input type="password" name="password" id="password" value="" />

Надеюсь, что это поможет кому-то.

-3
задан AmoonAhmed93 28 March 2019 в 06:32
поделиться

2 ответа

Я считаю, что проблема заключается в том, что списки не инициализированы. Кроме того, обычно лучше кодировать интерфейс, чем реализацию, поэтому могут помочь следующие изменения:

class Store{
  private String name;
  // use interface and initialize; 
  private final List<Account> arracc = new ArrayList<>();

  //same here
  private final List<Products> arrprod = new ArrayList<>();

  public Store(){

  }

  // return; note this exposes the internal storage, so may be incorrect
 public List<Account> getArracc() {
   return arracc;
 }

 // return the products; again, exposing internals and allows
 //  for anyone who calls getArrprod() to modify the list or the elements,
 //  which breaks encapsulation
 public List<Products> getArrprod() {
    return arrprod;
 }

 ...

Я думаю, что вторую проблему можно решить с помощью некоторого рефакторинга.

private static loadProducts(Store store) {
    ArrayList<String>productsList=new ArrayList<String>();
    // Read all products from the products file

    File products = new File("Products.txt"); 
    try(Scanner input = new Scanner(products);) 
    {
      input.useDelimiter(",");
      while(input.hasNextLine()){
         productsList.add(input.nextLine()); 

      }
      input.close();
    }catch(Exception ex){
       System.out.println("Error in Products");
    }

    for(int i = 0; i< productsList.size(); i++) {
      String account=productsList.get(i);
      splittedInfoProd= account.split(",");

      String id = splittedInfoProd[0];
      String name = splittedInfoProd[1];
      String supplier = splittedInfoProd[2];
      double price = Double.valueOf(splittedInfoProd[3]));

      Products productObject = new Products (id, name, supplier, price);

      store.setArrProd(productObject); 
   }
}

store будет иметь все входы.

0
ответ дан KevinO 28 March 2019 в 06:32
поделиться

Для вашего второго выпуска:

for(int i = 0; i< productsList.size(); i++) {
String account=productsList.get(i);
splittedInfoProd= account.split(",");
productObject.setProductID(splittedInfoProd[0]);
productObject.setName(splittedInfoProd[1]); 
productObject.setSupplier(splittedInfoProd[2]);

productObject.setPrice(Double.valueOf(splittedInfoProd[3]));
productObject=new Products(productObject.getID(),productObject.getNAme(),productObject.getSupplier(),productObject.getPrice());


store.setArrProd(productObject); 
} System.out.println(productObject.getPrice());

Ваш productObject имеет глобальное отклонение в классе OrderedItem. Так что в конце цикла for ваш объект будет хранить последние значения, а когда распечатайте его, он напечатает последнее значение. Чтобы получить все цены, вы должны выполнить итерацию массива.

ArrayList<Products> list = store.getArrprod();

for(Products p : list){
   System.out.println(p.getPrice());
}
0
ответ дан Y.Kakdas 28 March 2019 в 06:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: