【问题标题】:Getting ArrayList printed to another method将 ArrayList 打印到另一个方法
【发布时间】:2020-08-19 23:56:25
【问题描述】:

我很困惑,因为如何从另一个方法获取 ArrayList 并将其打印到另一个方法?所以我的问题是,我的代码是关于学生注册系统的,它有 admin 和 student 2 个方法,所以从 admin 方法中,我们可以添加我们想要的数组,当我们在 admin 方法中打印出来时,它工作正常。但是当我尝试用学生方法打印出来时,似乎不起作用。代码如下:

import java.util.*;

public class myStudent {

boolean logins = false;
int myId;
String addCourse="No Record";
String NewCourse;
String removeCourse="No Record";
int modifyCourse;
String password = null;
ArrayList test = new ArrayList();

public static void main(String[] args){

    myStudent obj0 = new myStudent();

    obj0.login();

}

void login(){
    myStudent obj1 = new myStudent();
    Scanner myScanner = new Scanner(System.in);

    System.out.println("  **Student Registration**");
    System.out.println("\t--LOGIN--");

    System.out.println("\n1)Login as student \n2)Login as admin \n3)Exit");
    System.out.print(">");
    int optionMenu = myScanner.nextInt();

    if(optionMenu == 1){
        obj1.showMenuStudent();
    }
    else if(optionMenu == 2){
        obj1.showMenuAdmin();
    }
    else if(optionMenu == 3){
        System.out.println("THANK YOU!");
        System.exit(0);
    }
 }

 void showMenuAdmin(){


        if (!logins) {
    //String myPass;
    Scanner myScanner = new Scanner(System.in);

    System.out.println("\n--LOGIN--");       
    try{
    System.out.print("Admin ID : ");
    myId = myScanner.nextInt();
    }
    catch(Exception e){
        System.out.println("INVALID ID!");
        System.exit(0);
    }

    System.out.print("Admin Password : ");
    password = myScanner.next();

        logins = true;
    }


    char option;
    Scanner myScanner = new Scanner(System.in);


    System.out.println("\n--WELCOME--");
    System.out.println("A. Create Course");
    System.out.println("B. Drop Course");
    System.out.println("C. Modify Course");
    System.out.println("D. Display Course");
    System.out.println("E. Logout");

    do
    {
    System.out.print("Enter An Option > ");
    option = myScanner.next().charAt(0);
    System.out.print("\n");


    switch(option){
        case 'A':

            System.out.print("Create Course(Maximum is 6) :");
            addCourse = myScanner.next();
            test.add(addCourse);
            System.out.println("\nCourse Added Successfully!");
            display();

        break;

        case 'B':


            Object[] myArray = test.toArray();

            System.out.println("Current Courses List: ");
            int k=1;
            for(int i=0; i < myArray.length; i++){

            System.out.println(k + ". " + myArray[i]);
            k++;
            }

                System.out.println("Enter course name you want to remove :");
                System.out.println("Enter 'back' to cancel");
                System.out.print(">");
                removeCourse = myScanner.next();
                if(removeCourse!="back"){
                test.remove(removeCourse);
                System.out.println("\nSucceed");
                display();
                }else
                display();

            break;

        case 'C':
            Object[] myArray2 = test.toArray();

            System.out.println("Current Courses List: ");
            int m=1;
            for(int i=0; i < myArray2.length; i++){

            System.out.println(m + ". " + myArray2[i]);
            m++;
            }

            System.out.println("Select course you want to modify :");

            System.out.print(">");
            modifyCourse = myScanner.nextInt();

            try{
            if(modifyCourse==1){
                System.out.print("Change to :");
                NewCourse=myScanner.next();
                test.set(0, NewCourse);
                System.out.println("Succeed!");
                display();
            }
            else if(modifyCourse==2){
                System.out.print("Change to :");
                NewCourse=myScanner.next();
                test.set(1, NewCourse);
                System.out.println("Succeed!");
                display();
            }else if(modifyCourse==3){
                System.out.print("Change to :");
                NewCourse=myScanner.next();
                test.set(2, NewCourse);
                System.out.println("Succeed!");
                display();
            }else if(modifyCourse==4){
                System.out.print("Change to :");
                NewCourse=myScanner.next();
                test.set(3, NewCourse);
                System.out.println("Succeed!");
                display();
            }else if(modifyCourse==5){
                System.out.print("Change to :");
                NewCourse=myScanner.next();
                test.set(4, NewCourse);
                System.out.println("Succeed!");
                display();
            }else if(modifyCourse==6){
                System.out.print("Change to :");
                NewCourse=myScanner.next();
                test.set(5, NewCourse);
                System.out.println("Succeed!");
                display();
            }
            else{
                System.out.print("Invalid!");
                display();
            }
            }
            catch(Exception e){
                System.out.print("Invalid, Course not available!");
                display();
            }

            break;


        case 'D':

            Object[] myArray3 = test.toArray();

            System.out.println("Courses List: ");
            int j=1;
            for(int i=0; i < myArray3.length; i++){

            System.out.println(j + ". " + myArray3[i]);
            j++;
            }
            display();
        break;
        }

    }while(option != 'E');

   System.out.println("Logged Out Successfully.Thank You!");
   login();


 }

 void showMenuStudent(){

    if (!logins) {

    Scanner myScanner = new Scanner(System.in);

    System.out.println("\n--LOGIN--");

    try{
    System.out.print("Student ID : ");
    myId = myScanner.nextInt();
    }
    catch(Exception e){
        System.out.println("INVALID ID!");
        System.exit(0);
    }

    System.out.print("Student Password(Default is IC Number) : ");
    password = myScanner.next();

        logins = true;
    }

    Object[] myArray4 = test.toArray();
    int n=1;
    for (Object myArray41 : myArray4) {
        System.out.println(n + ". " + myArray41);
        n++;
    }


 }

 void display(){
    showMenuAdmin();
 }
 }

我真的希望有人能理解我的问题并尝试解决它。​​请:(谢谢

这是从开始到结果的输出:

输出:

学生注册

--登录--

1)以学生身份登录

2)以管理员身份登录

3)退出

2

--登录--

管理员 ID:123

管理员密码:321

--欢迎--

A.创建课程

B.放弃课程

C.修改课程

D.展示课程

E.注销

输入选项 > A

创建课程(最多6个):CS123

课程添加成功!

--欢迎--

A.创建课程

B.放弃课程

C.修改课程

D.展示课程

E.注销

输入选项> E

已成功登出。谢谢!

学生注册

--登录--

1)以学生身份登录

2)以管理员身份登录

3)退出

1

--登录--

学号:123

学生密码(默认为身份证号码):321

[]输入选项>

//此时,我想知道为什么它会这样运行,我只想打印出管理员在数组中输入的内容,但是就像学生方法一样,即使我从未调用它,也只是再次重新运行管理员方法,并且它还表明该数组是空的。哪一部分是我的错误?还是我在这里遗漏了什么? :(

【问题讨论】:

  • 你也可以粘贴输出
  • 是的,有输出
  • 您有多个myStudent 实例。每个实例都有自己的列表。因此,在 student 方法中执行的 List 与您在 admin 方法中执行的 List 不同。
  • 您正在登录方法中创建新对象myStudent obj1 = new myStudent();,因此它将为您创建新列表
  • 是的,谢谢伙计!欣赏它:D

标签: java arrays arraylist methods


【解决方案1】:

所以我运行了您的代码并发现了问题。您正在每个 login() 创建一个新的 myStudent 对象,如果您:

  • 删除myStudent obj1 = new myStudent();这一行
  • 并将obj1.showMenuStudent(); 替换为showMenuStudent()
  • 并将obj1.showMenuAdmin(); 替换为showMenuAdmin();

您将解决此问题并获得您想要的输出。这是我得到的输出,希望它与您想要获得的内容同步:

  **Student Registration**
    --LOGIN--

1)Login as student 
2)Login as admin 
3)Exit
>2

--LOGIN--
Admin ID : 1
Admin Password : 1

--WELCOME--
A. Create Course
B. Drop Course
C. Modify Course
D. Display Course
E. Logout
Enter An Option > A

Create Course(Maximum is 6) :CS123

Course Added Successfully!

--WELCOME--
A. Create Course
B. Drop Course
C. Modify Course
D. Display Course
E. Logout
Enter An Option > E

Logged Out Successfully.Thank You!
  **Student Registration**
    --LOGIN--

1)Login as student 
2)Login as admin 
3)Exit
>1
1. CS123
Enter An Option > 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 2017-01-07
    • 1970-01-01
    • 2021-01-20
    • 2016-02-11
    • 1970-01-01
    • 2017-01-11
    相关资源
    最近更新 更多