Печать и проверка наличия дубликатов

#java

Вопрос:

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

 Scanner input = new Scanner(System.in);
Grocery adminObject = new Grocery();
Grocery adminObject1 = new Grocery();
ArrayList<Grocery> groceryRecord = new ArrayList<Grocery>();

do {
    System.out.println("1. Add Grocery Item");
    System.out.println("2. Delete Grocery Item");
    System.out.println("3. Update Grocery Item");
    System.out.println("4. Search Grocery Item");
    System.out.println("5. Bill Report");
    System.out.println("6. Exit");
    
    System.out.print("Please Enter Required Option from 1 - 6: ");
    choice = input.nextInt();
    System.out.println("");
    
    switch (choice){
        case 1:
            do {
                System.out.println("Product Number: ");
                adminObject.setProductCode(input.nextInt());
                input.nextLine();
                System.out.println("Name of the Product: ");
                adminObject.setName(input.nextLine());
                System.out.println("Price: ");
                adminObject.setPrice(input.nextDouble());
                System.out.println("Quantity: ");
                adminObject.setQuantity(input.nextDouble());
                System.out.println("Tax Percent: ");
                adminObject.setTax(input.nextDouble());
                System.out.println("Discount Percent: ");
                adminObject.setDiscount(input.nextDouble());
                input.nextLine();
                
                System.out.println("Do you want to save the file? ");
                choice_1 = input.nextLine();
                choice_1 =choice_1.toUpperCase();
                if(choice_1.equals("YES")||choice_1.equals("Y")){
                try(BufferedWriter groceryFile = new BufferedWriter(new FileWriter("grocery.txt", true));  BufferedReader reader = new BufferedReader(new FileReader("grocery.txt"))) {
                String currentLine = reader.readLine();

            while (currentLine != null)
            {
                String[] groceryDetail = currentLine.split(",");

                adminObject1.setProductCode(Integer.parseInt(groceryDetail[0]));
                            adminObject1.setName(groceryDetail[1]);
                            adminObject1.setPrice(Double.parseDouble(groceryDetail[2]));
                            adminObject1.setQuantity(Double.parseDouble(groceryDetail[3]));
                            adminObject1.setTax(Double.parseDouble(groceryDetail[4]));
                            adminObject1.setDiscount(Double.parseDouble(groceryDetail[5]));

                groceryRecord.add(new Grocery (adminObject1.getProductCode(), adminObject1.getName(), adminObject1.getPrice(), adminObject1.getQuantity(),adminObject1.getTax(),adminObject1.getDiscount()));
               
                currentLine = reader.readLine();
            }
        
          if(adminObject1.getProductCode()==adminObject.getProductCode()){
                System.out.println("Duplicate Product Code.. Please re-enter");
            }
            else {
              
               groceryFile.write(adminObject.getProductCode()   ","   adminObject.getName()   ","   adminObject.getPrice()   ","   adminObject.getQuantity()   ","   adminObject.getTax()   ","   adminObject.getQuantity()   "n");
            }  
 

Комментарии:

1. Что именно вы пытаетесь спросить? В чем проблема с вашим кодом? Пожалуйста, будьте более конкретны.

Ответ №1:

вы можете проверить, содержит ли текущая строка входной код продукта

 String currentLine = reader.readLine(); 
if(currentLine.contains("productCode")){

} 
 

Комментарии:

1. Он использовал input.nextInt() для получения кода продукта mans код продукта в целочисленном виде, а не в строке

2. Спасибо @sanjeevRm за ваше сообщение. Мои переменные класса следующие: Как я могу проверить дубликат с помощью типа данных int private int Код продукта; имя частной строки; частная двойная цена, количество, налог, скидка, netAmount; После строки чтения я помещаю оператор if, но он не фиксирует дубликат. Он все равно запишет это в файл, вместо того чтобы игнорировать его.

3. можете ли вы распечатать текущую строку и проверить, содержит ли она дубликат кода продукта