【问题标题】:Remove text object from an Arraylist based on userinput根据用户输入从 Arraylist 中删除文本对象
【发布时间】:2017-02-28 23:16:57
【问题描述】:

我正在创建一个程序,允许用户添加和删除问题(基于菜单)。

我的第一个问题: 如何以另一种方法显示我的“问题”数组列表? (在这种情况下,“您的问题是:+issue 数组)

我的第二个问题: 如何使用用户输入从问题数组列表中删除问题并将其存储到我的第二种方法中的“已解决”数组列表中?

代码 sn-p

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: "); 
}
}

我已经阅读了我在网上和书中可以找到的所有内容,但我找不到适合我希望我的代码执行的解决方案。

【问题讨论】:

    标签: java object arraylist methods


    【解决方案1】:

    问题 #1
    您必须将问题列出类的成员,以便可以从 IssueTrackingObject 类中的任何方法访问它们。

    问题 #2
    您可以添加 SolvedIssues 列表来存储从总问题列表中删除的问题。

    您可以尝试如下实现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 %d\n", counter + 1);
                    _allIssues.add(input.next());
                }
                System.out.println("Your issues are: ");
                for (int counter = 0; counter < _allIssues.size(); counter++) {
                    System.out.printf("%d. %s\n", 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. %s\n", 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. %s\n", 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 exit\n1. Create Issue\n2. Solve Issue\n"
                                      + "3. View solved issues\n4. 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");
            }
        }
    

    如果我没有完全理解您想要做的事情,请随时进行修改。

    【讨论】:

    • 感谢您抽出宝贵时间提供帮助,非常感谢!我现在要再次尝试编辑我的代码:)
    • 哇,非常感谢! cmets 也非常有帮助。许多初学者会发现这真的很有帮助!
    • 是的,你成功了!我知道我应该有两个数组列表——我只是不确定如何让它们链接,但现在我明白了:) 并且 Get 索引是做我想做的事情的非常简单的方法。真是太感谢你了!
    • @ItsAmiYouNeedAMedic 很高兴我能帮上忙!
    • @ItsAmiYouNeedAMedic 我意识到我在 printUnsolvedIssue() 中有一个错误。我已经更新了我的答案,请查看。
    猜你喜欢
    • 2014-02-06
    • 1970-01-01
    • 2015-07-06
    • 2012-10-30
    • 2019-04-08
    • 1970-01-01
    • 2021-03-11
    • 2015-08-02
    相关资源
    最近更新 更多