Member 14172281 Ответов: 0

Сделать функцию, которая выводит большой массив объектов на более мелкие кусочки каждый раз, когда я ее вызываю?


У меня есть csv файл что то вроде:

0, Морковь, Афганистан
1, Банан, Африка
..
..

I have like a lot of rows with similar stuff. I created an object for each row and added that object in an array. Now I want to let the user of my system look at this array and give me the index/name of the item they want, so I can add it to a new array of objects where I want to save all the items the person wants(something like a shop list). However, printing a large list of objects is really difficult(it gets too long inside the command prompt) and not really nice to look at(It would be difficult for the user to look at all those data at once). So what I wanted to do was to let them search the item by providing the name and then comparing the input name with any of the names of the objects inside the array and if it exists, add that object inside the wanted product Array. Or make a function that prints the first 100 items when called then the next 100 objects when called again(user can call this function using a specific command or something), etc. When the last 100 objects are printed It should then start printing the first 100 objects again when it is called and then next 100... Like some sort of loop. Is it possible to implement this in a simple way or should I just stick to searching with the name method?

Что я уже пробовал:

Я попытался реализовать команду "найти продукт", где я затем спрашиваю пользователя о названии продукта и циклически просматриваю массив объектов и сравниваю атрибут name с входным именем, и если существует такой продукт, я добавляю этот объект продукта в нужный массив продуктов. Что-то вроде:

for(int i=0;i<=products.length;i++){ 
    if(inputName == products[i].getName()){ //products is the array of product objects
        exists = true;
        user.addWantedObject(products[i]); // the object user of class Person has the array of wanted products and this function does the adding part. 
    }
    else{
        exists = false;
    }
}

if(exists == false) {
    System.out.println("Product does not exist!")
}


Конечно, я добавлю некоторые вещи позже, чтобы им не приходилось вводить одну и ту же команду каждый раз, когда они хотят найти продукт, но их снова просят ввести имя и сделать проверку и добавление снова, если продукт не существует. (это может произойти, когда человек делает опечатку или что-то еще).

I just want to know If it is possible to implement in such a way that I can let them put in a command like: "view list" and each time they enter this command it prints the first 100 product objects then if they do it again (which I can later maybe connect to a keyboard shortcut or something) They see the next 100 and then the next etc. If the last 100 are printed and the user inputs the command again it starts by printing the first 100 again, etc. I don't know if this is a weird question but I just wondered how I could do something like this. Maybe I am just thinking too far or am just doing something stupid. I just started coding and don't have much experience with Java. I never used this site so I don't really know how to ask something. Hope you guys understood what I want to do and know something about it :)

Richard Deeming

Существует очевидная проблема с вашим циклом: если только inputName это последний пункт в списке, вы всегда будете отображать "продукт не найден" сообщение.

Вам нужно переместить exists = false; вне и непосредственно перед петлей.

В зависимости от данных и желаемого поведения вы также можете захотеть break выходите из цикла, как только вы найдете продукт, который ищете.

0 Ответов