Удаление текстового объекта из списка массивов на основе пользовательского ввода

#java #object #arraylist #methods

#java #объект #список массивов #методы

Вопрос:

Я создаю программу, которая позволяет пользователю добавлять проблемы и удалять их (на основе меню).

Мой первый вопрос: Как я могу отобразить мой список массивов «проблема» другим методом? (В данном случае «ваши проблемы: массив проблем»)

Мой второй вопрос: как я могу удалить проблему из списка массивов проблем С помощью пользовательского ввода и сохранить ее в списке массивов «решаемая» в моем втором методе?

Фрагмент кода:

 public class IssueTrackingObject {

int length; 
int solved; 
Scanner input = new Scanner(System.in); 

public void createIssue() {
    System.out.println("Enter the number of issues you will  enter: ");
    length = input.nextInt(); 
    String[] issues = new String[length]; //issues stored in this array
 for(int counter = 0; counter < length; counter  ){
     System.out.println(counter 1   (") Enter the first issue: ")); 
    issues[counter] = input.next(); 
 }
    System.out.println("Your issues are: ");  
    for(int counter = 0; counter < length; counter  ){
 System.out.println(issues[counter]);
    }     
}

void solvedIssue() {
    System.out.println("To MARK an issue as solved, please enter the number of the issue: ");
    solved = input.nextInt(); 
    String [] issues = new String [solved]; 
    for(int s = 0; s < length; s  ){
 System.out.println(issues[s]);

}
}
void printSolvedIssue() {
    System.out.println("You have SOLVED the following issues: "); 
}

void printUnsolvedIssue() {
    System.out.println("Your unsolved Issues are: "); 
}
}
  

Я прочитал все, что смог найти в Интернете и в своей книге, но я не могу найти решение, которое соответствует тому, что я хочу, чтобы мой код выполнял.

Ответ №1:

Проблема # 1
Вы должны создать в своих выпусках списки членов класса, чтобы они могли быть доступны из любого метода внутри IssueTrackingObject класса.

Проблема # 2
Вы можете добавить список решаемых проблем, чтобы сохранить те проблемы, которые удалены из общего списка проблем.

Вы можете попробовать реализовать свой IssueTrackingObject класс следующим образом:

 import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


    public class IssueTrackingObject {
        Scanner input = new Scanner(System.in);
        // Make your issues lists members of the class so that they
        // can be accessed from all the methods inside the class
        private List<String> _allIssues = new ArrayList<String>();
        // Added a Solved issues list to store the solved issues
        private List<String> _solvedIssues = new ArrayList<String>();

        public void createIssue() {
            System.out.println("Enter the number of issues you will  enter: ");
            int length = input.nextInt();
            for (int counter = 0; counter < length; counter  ) {
                System.out.printf("Enter issue number %dn", counter   1);
                _allIssues.add(input.next());
            }
            System.out.println("Your issues are: ");
            for (int counter = 0; counter < _allIssues.size(); counter  ) {
                System.out.printf("%d. %sn", counter   1, _allIssues.get(counter));
            }
        }

        void solvedIssue() {
            if(_allIssues.size() == 0) {
                System.out.println("No issues entered yet. Please enter some issues");
                return;
            }
            System.out.println("To MARK an issue as solved, please enter the number of the issue: ");
            int index = input.nextInt();
            --index; // List starts at zero
            _solvedIssues.add(_allIssues.get(index));
            _allIssues.remove(index);
        }

        void printSolvedIssue() {
            System.out.println("You have SOLVED the following issues: ");
            for(int i = 0; i < _solvedIssues.size();   i) {
                System.out.printf("%d. %sn", i   1, _solvedIssues.get(i));
            }
        }

        void printUnsolvedIssue() {
            System.out.println("Your unsolved Issues are: ");
            for(int i = 0; i < _allIssues.size();   i) {
                System.out.printf("%d. %sn", i   1, _allIssues.get(i));
            }
        }

        public static void main(String[] args) {
            int exit = 1;
            Scanner input = new Scanner(System.in);
            IssueTrackingObject itracker = new IssueTrackingObject();
            while(exit != -1) {
                System.out.println("Select an Option or -1 to exitn1. Create Issuen2. Solve Issuen"
                                    "3. View solved issuesn4. View unsolved issues");
                exit = input.nextInt();
                switch (exit) {
                case(0) :
                    System.out.println("Number of issues has to be greater than zero");
                break;
                case(1) :
                    itracker.createIssue();
                break;
                case(2) :
                    itracker.solvedIssue();
                break;
                case(3) :
                    itracker.printSolvedIssue();
                break;
                case(4) :
                    itracker.printUnsolvedIssue();
                break;
                }

            }
            input.close();
            System.out.println("Program finished");
        }
    }
  

Не стесняйтесь вносить изменения, если я не совсем понял, что вы пытались сделать.

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

1. Я просто хотел бы поблагодарить вас за то, что нашли время помочь, я действительно ценю это! Сейчас я снова попытаюсь отредактировать свой код 🙂

2. Вау, огромное вам спасибо! Комментарии также были действительно полезны. Многие новички найдут это действительно полезным!

3. да, вы справились с этим! Я знал, что у меня должно быть два arraylists — я просто не был уверен, как заставить их связать, но теперь я вижу 🙂 и Get index — действительно простой способ сделать то, что я хотел. Я не могу отблагодарить вас достаточно!

4. @ItsAmiYouNeedAMedic рад, что смог помочь!

5. @ItsAmiYouNeedAMedic Я понял, что у меня ошибка в printUnsolvedIssue(). Я обновил свой ответ, пожалуйста, проверьте его.