gpt4 book ai didi

java - 删除学生数组中的学生

转载 作者:行者123 更新时间:2023-12-01 12:08:21 24 4
gpt4 key购买 nike

我不知道如何删除学生数组中的学生。我需要继续排列,没有间隙或中断,但我在这样做时遇到了一些麻烦。添加学生时,我在将信息设置到数组中时也遇到问题。我可以询问信息,但将其保存到我无法弄清楚的数组中。

import java.util.Scanner;

public class ArrayDemo
{
static Student[] students;

private static void ViewStudents()
{

for( int i = 0; i < students.length; i++)
{
System.out.println( i + ") " + students[i].getLName() + ", " + students[i].getFName() );
}
}

private static void ViewDetails()
{
Scanner kb = new Scanner( System.in );

int i;
System.out.println( "Who would you like to view?");ViewStudents();
i = Integer.parseInt( kb.nextLine() );

System.out.println( "ANum:\t\t" + students[i].getANum() );
System.out.println( "\nAddress:\t" + students[i].address.getHouseNum() + " " + students[i].address.getStreet());
System.out.println( "\t\t" + students[i].address.getCity() + ", " + students[i].address.getState() + " " + students[i].address.getZip());
System.out.println( "\t\t" + students[i].address.getLine2());
}

private static void AddStudent()
{
Scanner kb = new Scanner( System.in );

Student student = new Student();

String FirstName;
String LastName;
int HouseNum ;
String Street;
String City ;
String State ;
int Zip ;
String Line2 ;

/* System.out.println( "\tFirst:" + student.getFName() + "\n\tLast:" + student.getLName() + "\n\tA-Number:" +student.getANum()); */

System.out.println( "\tInput Information" );
System.out.println( "\tFirst Name:");
FirstName = kb.nextLine();
System.out.println( "\tLast Name:");
LastName = kb.nextLine();
System.out.println( "\tHouse Number:");
HouseNum = Integer.parseInt( kb.nextLine() );
System.out.println( "\tStreet:");
Street = kb.nextLine();
System.out.println( "\tCity:");
City = kb.nextLine();
System.out.println( "\tState:");
State = kb.nextLine();
System.out.println( "\tZip Code:");
Zip = Integer.parseInt( kb.nextLine() );
System.out.println( "\tExtra Information:");
Line2 = kb.nextLine();

System.out.println( "\nStudent:\t" + LastName + ", " + FirstName );
System.out.println( "ANum:\t\t" + student.getANum() );
System.out.println( "Address:\t" + HouseNum + " " +Street);
System.out.println( "\t\t" + City + ", " + State + " " + Zip);
System.out.println( "\t\t" + Line2);

//students.setAddress( HouseNum, Street, City, State, Zip, Line2 );
System.out.println( "\tYour Student was Successfully Added" );
}

private static void RemoveStudent()
{
Scanner kb = new Scanner( System.in );
int i;
System.out.println( "Who would you like to remove?");ViewStudents();
i = Integer.parseInt( kb.nextLine() );

for( i < student.length - 1; i++)
{ students[i] = students[i + 1];
students[students.length - 1] = null;
}

public static void main( String[] args )
{
Scanner kb = new Scanner( System.in );

int x = 40;
//students = new Student[0];
students = new Student[2];

students[0] = new Student( "Thomas","Emily");
students[1] = new Student( "Bob", "Joe");
students[0].address = new Address( 6614, "White Sands ln", "Hixson", "Tennessee", 37343, "" );
students[1].address = new Address( 66, "White ln", "Hson", "Tealamabaee", 373873, "" );
do
{
System.out.println();
System.out.println( "Do you want to:" );
System.out.println( "\t0) View Students" );
System.out.println( "\t1) View Students' Details" );
System.out.println( "\t2) Add a Student" );
System.out.println( "\t3) Remove a Student" );
System.out.println( "\t4) Exit" );
x = Integer.parseInt(kb.nextLine());


switch (x)
{

case 0:
ViewStudents();
break;
case 1:
ViewDetails();
break;
case 2:
AddStudent();
break;
case 3:
RemoveStudent();
break;
case 4:

break;
default:
}
}
while( x != 4);

}

}

学生.java

导入java.util.Random;

公开课学生{

Address address; //javac will now compile Address.java

// List private data first -- it's polite to my programmer-user.
private String LName; // Last Name
private String FName; // First Name
private int ANum; // A number

public Student()
{
Random rand = new Random();

LName = "";
FName = "";
// ANum = 0;
ANum = rand.nextInt( 99999999 );
}

public Student( String ln, String fn/*, int an*/ )
{
Random rand = new Random();

LName = ln;
FName = fn;
// ANum = an;
ANum = rand.nextInt( 99999999 );
}

public boolean setLName( String ln )
{
LName = ln;
return true;
}

public String getLName()
{
return LName;
}

public boolean setFName( String fn )
{
FName = fn;
return true;
}

public String getFName()
{
return FName;
}

// public boolean setANum( int an )
// {
// ANum = an;
// return true;
// }

public String getANum()
{
// String str = String.format( "A%08d", ANum );
// return "A" + ANum;
// return str;
return String.format( "A%08d", ANum );
}

}

最佳答案

当我看到“学生”这个词时,我觉得这是一份学校作业。因此,我不会要求您使用数组以外的任何东西。

删除数组中的记录:

在数组中,如果要删除中间没有间隙的记录,就必须将后面的记录一条一条地“上移”。这是缩小阵列间隙的唯一方法。 (不使用任何其他数据结构)。

//record of student, index to be deleted, number of records you have
public static int deleteRecord(Student[] record, int idx, int numOfRecords)
{
if(idx < 0 || idx > numOfRecords) //Check index is valid
return -1;

for(int x=idx; x<numOfRecords; x++) //closing the gap by copying the next value
record[x] = record[x+1];

return (--numOfRecords);
}

在数组中添加记录:

  1. 检查是否已达到记录数限制。
  2. 如果仍有空间,请添加到最后可用位置。

添加学生记录:

public static int addRecord(Student[] record, int numOfRecords)   
{
if(numOfRecords >= record.legnth) //Check record is not full yet
return -1;

//prompt for student particulars
record[numOfRecords].name = xxx; //where xxx is input by user
record[numOfRecords].id = yyy; //where yyy is input by user
return (++numOfRecords);
}

我见过很多大学/学院都有这样的作业。他们通常希望您跟踪当前拥有的记录数量。

因为您没有发布您的学生类(class)的样子。如果学生类中有一个静态变量,记录添加的学生对象的数量。您不必手动跟踪记录数量。如果您的 Student 类中有一个计数器,它将如下所示:

public class Student
{
static int numOfRecords = 0;
public Student()
{
numOfRecords++;
}
}
<小时/>

要维护您当前拥有的内容,请在 main.c 之外再添加一个静态变量。 (看起来您不想将任何内容传递给方法)

static int numOfRecords = 0; //declare outside your main

public static void AddStudent()
{
Scanner scn = new Scanner( System.in );

System.out.println("Enter last name:");
String ln = scn.nextLine():
System.out.println("Enter first name:");
String fn = scn.nextLine():

Student stud = new Student(ln, fn);
students[numOfRecords] = stud;
numOfRecords ++;
}

这就是您需要添加的全部内容。

关于java - 删除学生数组中的学生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27414176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com