String[] courseNames=new String[numbOfCourses];
Double[] courseCredits=new Double[numbOfCourses];
String[] gradeLetters= new String[numbOfCourses];
我要求用户输入一些课程名称,学分和字母,然后将它们放在每个数组中,例如:
courseNames[j]= keyboard.next();
courseCredits[j]=keyboard.nextDouble();
gradeLetters[j]=keyboard.next();
我希望输出像
之前:
course numb course name course credit course Grade
1 C 3.0 A
2 B 3.0 B
3 D 3.0 A
用户输入:2
之后:
course numb course name course credit course Grade
1 C 3.0 A
2 D 3.0 A
答案 0 :(得分:0)
首先,我强烈建议您使用某种列表,因为这样可以更轻松地实现所需的效果。
要从数组中“删除”项目,可以创建类似于以下内容的方法:
void deleteCourseAtIndex(int index) {
courseNames[index]= null;
courseCredits[index]= null;
gradeLetters[index]= null;
}
然后在执行printf()以显示数组的内容时:
for (int i = 0; i < courseNames.length; i++) {
if (courseNames[i] != null)
//printf() with whatever formatting you have
}
要添加新课程,您必须在数组中具有足够的索引来存储新课程。这就是为什么我建议您使用列表的原因。尽管如此:
//This method adds course info to the arrays and returns a boolean whether it was successfully added
//Precondition: all arrays are the same length
boolean addCourse(String[] cNames, double[] cCredits, String[] gLetters) {
boolean added = false;
for (int i = 0; i < courseNames.length; i++) {
if (courseNames[i] == null) {
courseNames[i]= cNames;
courseCredits[i]= cCredits;
gradeLetters[i]= gLetters;
added = true;
}
}
return added;
}
使用列表,您不必处理空间不足的问题,因为在初始化它们时它们没有固定的大小。为此,请尝试执行以下操作:
ArrayList<String> courseNames= new ArrayList<String>();
ArrayList<Double> courseCredits = new ArrayList<Double>();
ArrayList<String> gradeLetters = new ArrayList<String>();
请注意,我使用Double而不是double,因为double是基元,并且ArrayLists不能使用基元。使用列表时,请使用包装器类Integer,Double等。
现在,当您接受键盘输入时:
courseNames.add(keyboard.next());
courseCredits.add(keyboard.nextDouble());
gradeLetters.add(keyboard.next());
您甚至不需要遍历每个索引!
更好的是,您可以创建一个全新的课程,称为Course(如Andreas所建议),并创建一个ArrayList。