Java 我无法从arraylist打印用户输入
我对数组列表不太熟悉。 如果我运行程序,我可以输入所有变量,但当我想查看我写的内容时,它不会打印出来Java 我无法从arraylist打印用户输入,java,arraylist,Java,Arraylist,我对数组列表不太熟悉。 如果我运行程序,我可以输入所有变量,但当我想查看我写的内容时,它不会打印出来 import java.util.*; public class Dynamic{ private String fname; private String lname; private int age; private String course; private int idnum; public Dynamic(String Fname
import java.util.*;
public class Dynamic{
private String fname;
private String lname;
private int age;
private String course;
private int idnum;
public Dynamic(String Fname, String Lname, int Age, String Course, int IdNum) {
fname = Fname;
lname = Lname;
age = Age;
course = Course;
idnum = IdNum;
}
public String getfName() {
return fname;
}
public String getlName() {
return lname;
}
public int getAge() {
return age;
}
public String getCourse() {
return course;
}
public int getidNum() {
return idnum;
}
public String toString()
{
return fname+" "+lname+" "+age+" "+course+" "+idnum;
}
public static void main(String [] args) {
menu();
}//end of main
public static void menu() {
ArrayList<Dynamic> users = new ArrayList<>();
Scanner in = new Scanner (System.in);
System.out.println("1: Add Student\n2: View Student");
int choose = in.nextInt();
switch(choose) {
case 1:
addStudent(users);
break;
case 2:
viewStudent(users);
break;
}
}//end of menu
导入java.util.*;
公共类动态{
私有字符串fname;
私有字符串名称;
私人互联网;
私人弦乐课程;
私有int-idnum;
公共动态(字符串Fname、字符串Lname、整数年龄、字符串课程、整数IdNum){
fname=fname;
lname=lname;
年龄=年龄;
课程=课程;
idnum=idnum;
}
公共字符串getfName(){
返回fname;
}
公共字符串getlName(){
返回lname;
}
公共整数getAge(){
回归年龄;
}
公共字符串getCourse(){
返回路线;
}
public int getidNum(){
返回idnum;
}
公共字符串toString()
{
返回fname+“”+lname+“”+age+“”+course+“”+idnum;
}
公共静态void main(字符串[]args){
菜单();
}//干管末端
公共静态无效菜单(){
ArrayList用户=新建ArrayList();
扫描仪输入=新扫描仪(系统输入);
System.out.println(“1:添加学生\n2:查看学生”);
int choose=in.nextInt();
开关(选择){
案例1:
addStudent(用户);
打破
案例2:
viewStudent(用户);
打破
}
}//菜单结束
这是我获取用户输入的方法
public static void addStudent(ArrayList<Dynamic> users) {
Scanner in = new Scanner (System.in);
System.out.println("Please Enter Name of Student");
String Fname = in.nextLine();
System.out.println("Please Enter Last Name of Student");
String Lname= in.nextLine();
System.out.println("Please Enter Age of Student");
int Age= in.nextInt();
String trash = in.nextLine();
System.out.println("Please Enter Course of Student");
String Course= in.nextLine();
System.out.println("Please Enter Id Number of Student");
int IdNum = in.nextInt();
Dynamic student = new Dynamic(Fname, Lname, Age, Course, IdNum);
users.add(student);
menu();
}//end of add users
publicstaticvoidaddstudent(arraylistusers){
扫描仪输入=新扫描仪(系统输入);
System.out.println(“请输入学生姓名”);
字符串Fname=in.nextLine();
System.out.println(“请输入学生的姓氏”);
字符串Lname=in.nextLine();
System.out.println(“请输入学生年龄”);
int Age=in.nextInt();
字符串trash=in.nextLine();
System.out.println(“请输入学生的课程”);
字符串Course=in.nextLine();
System.out.println(“请输入学生Id号”);
int IdNum=in.nextInt();
动态学生=新动态(Fname、Lname、年龄、课程、IdNum);
用户。添加(学生);
菜单();
}//添加用户结束
下面是我的viewStudent方法,我不知道有什么错误或遗漏。我也是一个初学者,我不能完全理解和arraylist方法
public static void viewStudent(ArrayList<Dynamic> users) {
System.out.printf("%10s%7s%8s%10s\n", "Name","Age","Course","IdNumber");
for (Dynamic stud : users)
{
System.out.println(stud);
}
}//end of viewusers
}//end of studentclass
publicstaticvoidviewStudent(ArrayList用户){
System.out.printf(“%10s%7s%8s%10s\n”、“姓名”、“年龄”、“课程”、“ID号”);
用于(动态螺柱:用户)
{
系统输出打印LN(螺柱);
}
}//视图结束用户
}//学生下课
您可以将ArrayList声明为全局变量,然后可以在任何地方使用它,如下所示:-
import java.util.*;
public class Dynamic
{
static ArrayList<Dynamic> users = new ArrayList<Dynamic>();
private String fname;
private String lname;
private int age;
private String course;
private int idnum;
public Dynamic(String Fname, String Lname, int Age, String Course, int IdNum)
{
fname = Fname;
lname = Lname;
age = Age;
course = Course;
idnum = IdNum;
}
public String getfName()
{
return fname;
}
public String getlName()
{
return lname;
}
public int getAge()
{
return age;
}
public String getCourse()
{
return course;
}
public int getidNum()
{
return idnum;
}
public String toString()
{
return fname+" "+lname+" "+age+" "+course+" "+idnum;
}
public static void main(String [] args)
{
menu();
}//end of main
public static void menu()
{
Scanner in = new Scanner (System.in);
System.out.println("1: Add Student\n2: View Student");
int choose = in.nextInt();
switch(choose) {
case 1:
addStudent();
break;
case 2:
viewStudent();
break;
}
}
public static void addStudent()
{
Scanner in = new Scanner (System.in);
System.out.println("Please Enter Name of Student");
String Fname = in.nextLine();
System.out.println("Please Enter Last Name of Student");
String Lname= in.nextLine();
System.out.println("Please Enter Age of Student");
int Age= in.nextInt();
String trash = in.nextLine();
System.out.println("Please Enter Course of Student");
String Course= in.nextLine();
System.out.println("Please Enter Id Number of Student");
int IdNum = in.nextInt();
Dynamic student = new Dynamic(Fname, Lname, Age, Course, IdNum);
users.add(student);
menu();
}//end of add users
public static void viewStudent()
{
System.out.printf("%10s%7s%8s%10s\n", "Name","Age","Course","IdNumber");
for (Dynamic stud : users)
{
System.out.println(stud);
}
}//end of viewusers
}
import java.util.*;
公共类动态
{
静态ArrayList用户=新建ArrayList();
私有字符串fname;
私有字符串名称;
私人互联网;
私人弦乐课程;
私有int-idnum;
公共动态(字符串Fname、字符串Lname、整数年龄、字符串课程、整数IdNum)
{
fname=fname;
lname=lname;
年龄=年龄;
课程=课程;
idnum=idnum;
}
公共字符串getfName()
{
返回fname;
}
公共字符串getlName()
{
返回lname;
}
公共整数getAge()
{
回归年龄;
}
公共字符串getCourse()
{
返回路线;
}
public int getidNum()
{
返回idnum;
}
公共字符串toString()
{
返回fname+“”+lname+“”+age+“”+course+“”+idnum;
}
公共静态void main(字符串[]args)
{
菜单();
}//干管末端
公共静态无效菜单()
{
扫描仪输入=新扫描仪(系统输入);
System.out.println(“1:添加学生\n2:查看学生”);
int choose=in.nextInt();
开关(选择){
案例1:
addStudent();
打破
案例2:
学生视图();
打破
}
}
公共静态void addStudent()
{
扫描仪输入=新扫描仪(系统输入);
System.out.println(“请输入学生姓名”);
字符串Fname=in.nextLine();
System.out.println(“请输入学生的姓氏”);
字符串Lname=in.nextLine();
System.out.println(“请输入学生年龄”);
int Age=in.nextInt();
字符串trash=in.nextLine();
System.out.println(“请输入学生的课程”);
字符串Course=in.nextLine();
System.out.println(“请输入学生Id号”);
int IdNum=in.nextInt();
动态学生=新动态(Fname、Lname、年龄、课程、IdNum);
用户。添加(学生);
菜单();
}//添加用户结束
公共静态void viewStudent()
{
System.out.printf(“%10s%7s%8s%10s\n”、“姓名”、“年龄”、“课程”、“ID号”);
用于(动态螺柱:用户)
{
系统输出打印LN(螺柱);
}
}//视图结束用户
}
希望这会有所帮助您的问题与
ArrayList
没有任何关系,因为您所做的一切都是添加
并对其进行迭代,并且没有任何问题。现在,您应该永远不做的是建议您在POJO类中创建一个静态ArrayList
实例,就像在一个长时间运行的应用程序中,您在很多地方都这样做一样,它将防止对象的垃圾收集,这将不必要地耗尽您的堆
一个很好的做法是将代码分成不同的层(每个层是一个类或一组类)。
以下是您可以做的:
有一个数据输入/输出层,您只读取数据(据我猜测,您的输入基于输入)
public class DynamicRepository {
private final ArrayList<Dynamic> dynamicArrayList;
DynamicRepository(ArrayList<Dynamic> dynamicArrayList) {
this.dynamicArrayList = dynamicArrayList;
}
public void add(Dynamic dynamic) {
dynamicArrayList.add(dynamic);
}
public ArrayList<Dynamic> getDynamicArrayList() {
return dynamicArrayList;
}
}
public class DynamicDaoImpl {
private final DynamicRepository dr;
DynamicDaoImpl(DynamicRepository dr) {
this.dr = dr;
}
public void insertIntoRepository (String name, int age) {
dr.add(new Dynamic(name, age));
}
public List<Dynamic> getAllFromRepository() {
return dr.getDynamicArrayList();
}
}
public class DataInputOutputClass {
private final BufferedReader br;
private final DynamicDaoImpl daoImpl;
DataInputOutputClass(BufferedReader br, DynamicDaoImpl daoImpl) {
this.br = br;
this.daoImpl = daoImpl;
}
void insertData() throws IOException {
System.out.println("Enter Name");
String name = br.readLine();
System.out.println("Enter Age");
int age = Integer.parseInt(br.readLine());
daoImpl.insertIntoRepository(name, age);
}
void printData() {
for (Dynamic dynamic : daoImpl.getAllFromRepository()) {
System.out.println(dynamic);
}
}
}
public class Driver {
private final BufferedReader br;
private final DataInputOutputClass dio;
Driver(BufferedReader br, DataInputOutputClass dio) {
this.br = br;
this.dio = dio;
}
public void run() throws IOException {
System.out.println("Enter Choice: 1 or 2");
int choice = Integer.parseInt(br.readLine());
switch (choice) {
case 1: {
dio.insertData();
run();
break;
}
case 2: {
dio.printData();
break;
}
}
}
}
public class Test {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
DynamicDaoImpl dynamicDao = new DynamicDaoImpl(new DynamicRepository(new ArrayList<>()));
DataInputOutputClass dataInputOutputClass = new DataInputOutputClass(br, dynamicDao);
Driver dr = new Driver(br, dataInputOutputClass);
dr.run();
}
}