【发布时间】: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