- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Java 数据结构和算法类项目遇到了问题。我有一个类程序,可以选择创建、更新、显示或查看所有学生。
有人可以帮助我实现排序算法并解释它吗?我试图按年级对学生进行排序,但我不知道如何通过用户输入来实现它。
这里是主要内容:
package main;
import school.School;
public class Main {
public static void main(String[] args) {
School aSchool = new School();
aSchool.initialMenu();
}
}
这里是学校:
package school;
import java.io.PrintStream;
import java.util.Scanner;
import student.Student;
public class School {
private final Scanner keyboard = new Scanner(System.in);
private final PrintStream messagePane = new PrintStream(System.out, true);
private int nextAvailablePosition;
private Student[] classroom;
public School() {
super();
}
private void initializeArray() {
classroom = new Student[4];
nextAvailablePosition = 0;
}
private void storeStudentInArray(Student aStudent) {
assert aStudent != null : "Null parameter supplied to School.storeStudentInArray()";
if (nextAvailablePosition >= classroom.length) {
Student[] biggerClassroom = new Student[(int) (classroom.length * 1.5)];
System.arraycopy(classroom, 0, biggerClassroom, 0, classroom.length);
classroom = biggerClassroom;
}
classroom[nextAvailablePosition] = aStudent;
nextAvailablePosition++;
}
private Student searchForStudentInArray(String searchID) {
assert searchID != null : "Null parameter supplied to School.searchForStudentInArray()";
int index = 0;
while (index < nextAvailablePosition) {
if (searchID.equalsIgnoreCase(classroom[index].getID())) {
return classroom[index];
}
index++;
}
return null;
}
public void initialMenu() {
initializeArray();
boolean stillWorking = true;
do {
messagePane.print("\n"
+ "WELCOME to the Student Database Organizer 1.0!\n"
+ "Here you can store students in a virtual classroom.\n"
+ "\n"
+ "(C)reates a Student\n"
+ "(U)pdate a Student\n"
+ "(D)isplay a Student\n"
+ "(A)ll Students\n"
+ "(E)nd\n"
+ "Enter Letter Here: \n");
String initialResponse = keyboard.nextLine();
String response = initialResponse.trim().toUpperCase();
if (response.length() > 0) {
response = response.substring(0, 1);
if (response.equals("E")) {
stillWorking = false;
} else if (response.equals("U")) {
updateStudent();
} else if (response.equals("D")) {
displayStudent();
} else if (response.equals("C")) {
Student aStudent = createStudent();
if (aStudent != null) {
storeStudentInArray(aStudent);
}
} else if (response.equals("A")) {
gpa();
} else {
messagePane.println("Try again " + initialResponse
+ ", is not a valid choice.\n"
+ "Please enter one of the letters from the specified menu.");
}
} else {
messagePane.println("You must enter one of the letters from the specified menu\n"
+ "before you press \"Enter\".");
}
} while (stillWorking);
}
private Student createStudent() {
messagePane.println(
"\nYou can enter the student's information here: \n");
messagePane.print("What's the Student's name?: ");
String name = keyboard.nextLine();
messagePane.print("What year/grade is the student?: ");
String agrade = keyboard.nextLine();
messagePane.print("Birthday (MMDDYY): ");
int birthday = keyboard.nextInt();
keyboard.nextLine();
messagePane.print("What's their ID number? (1-7 Numbers): ");
String id = keyboard.next();
keyboard.nextLine();
messagePane.print("Course(s) taken: ");
String course = keyboard.nextLine();
double gpa;
messagePane.print("GPA: ");
Scanner inputScanner = new Scanner(keyboard.nextLine());
if (inputScanner.hasNextDouble()) {
gpa = inputScanner.nextDouble();
} else if (inputScanner.hasNext()) {
messagePane.println("You entered something other than a number - the gpa "
+ "has been set to the default of " + Student.DEFAULT_GPA);
gpa = Student.DEFAULT_GPA;
} else {
gpa = Student.DEFAULT_GPA;
}
Student newStudent;
try {
newStudent = Student.create(name,
agrade, birthday, id,
course, gpa );
} catch (Exception anException) {
messagePane.println(" Sorry, I couldn't input the student for you. " + anException.getMessage());
newStudent = null;
}
return newStudent;
}
private void displayStudent() {
Student aStudent = locateStudent();
if (aStudent == null) {
messagePane.println("Sorry, this ID number is not in the classroom.");
} else {
messagePane.println(" " + aStudent.getGrade() + " " + aStudent.getName()
+ " (" + aStudent.getBirthday() + ", " + aStudent.getID() + ") " + "\n"
+ " " + aStudent.getCourse() + " GPA: " + aStudent.getGpa()
);
}
}
private void updateStudent() {
Student aStudent = locateStudent();
if (aStudent == null) {
messagePane.println("Sorry, the student is not listed.");
} else {
updateMenu(aStudent);
}
}
private void updateMenu(Student aStudent) {
assert aStudent != null : "Null parameter supplied to School.updateMenu()";
String studentBeforeUpdating = singleLineStudentDisplay(aStudent);
messagePane.println("The Student being updated is: \n" + aStudent);
boolean stillTrying = true;
do {
messagePane.print("\n"
+ "Student Database Organizer 1.0\n"
+ "UPDATE MENU OPTIONS\n"
+ ""
+ "Press 1 to change the Student's name\n"
+ "Press 2 to update grade\n"
+ "Press 3 to update course(s)\n"
+ "Press 4 to update gpa \n"
+ "Press 5 to finish updating current Student\n"
+ ""
+ "\nPlease enter your selection: ");
Scanner inputScanner = new Scanner(keyboard.nextLine());
if (inputScanner.hasNextInt()) {
int response = inputScanner.nextInt();
if (response == 1) {
updateName(aStudent);
} else if (response == 2) {
updateGrade(aStudent);
} else if (response == 3) {
updateCourse(aStudent);
} else if (response == 4) {
updateGpa(aStudent);
} else if (response == 5) {
stillTrying = false;
} else {
messagePane.println(
"You typed " + response + ", which is not a legit option.\n"
+ "Please check the list of numbers in the menu..");
}
} else if (inputScanner.hasNext()) {
String junk = inputScanner.next();
messagePane.println("You entered " + junk + ", which is not a legal option.\n"
+ "Please enter one of the numbers from the specified menu.");
} else {
messagePane.println("Hold your horses! You need to enter a number\n"
+ "before you press \"Enter\".");
}
} while (stillTrying);
messagePane.println("\n" + "Student before updating: " + studentBeforeUpdating);
messagePane.println("Student after updating: " + singleLineStudentDisplay(aStudent));
}
private void updateName(Student aStudent) {
assert aStudent != null : "Null parameter supplied to School.updateName()";
int result;
messagePane.println("The student's name is: " + aStudent.getName());
messagePane.print("Now it is...: ");
String name = keyboard.nextLine();
result = aStudent.setName(name);
messagePane.println("\nUpdate status: "
+ Student.getDescriptionOfReturnedSignal(result) );
messagePane.println("\nFinalized changes: " + singleLineStudentDisplay(aStudent));
}
private void updateBirthday(Student aStudent) {
assert aStudent != null : "Null parameter supplied to School.updateBirthday()";
int result;
messagePane.println("The current birthday is: " + aStudent.getBirthday());
messagePane.print("New birthday (exactly four digits): ");
Scanner inputScanner = new Scanner(keyboard.nextLine());
if (inputScanner.hasNextInt()) {
int birthday = keyboard.nextInt();
keyboard.nextLine();
result = aStudent.setBirthday(birthday);
messagePane.println("Update status: "
+ Student.getDescriptionOfReturnedSignal(result));
messagePane.println("Finalized Changes: " );
} else {
messagePane.println("You didn't enter a number\n"
+ "Please Check the Format MMDDYY \n\n"
+ "Sorry, no changes were made.");
}
}
private void updateGrade(Student aStudent) {
assert aStudent != null : "Null parameter supplied to School.updateGrade()";
int result;
messagePane.println("The student's grade is: " + aStudent.getGrade());
messagePane.print("Now it is... (at least three characters: ");
String agrade = keyboard.nextLine();
result = aStudent.setGrade(agrade);
messagePane.println("Update status: "
+ Student.getDescriptionOfReturnedSignal(result));
messagePane.println("Finalized Changes: " + singleLineStudentDisplay(aStudent));
}
private void updateCourse(Student aStudent){
assert aStudent != null : "Null parameter supplied to School.updateCourse()";
int result;
messagePane.println("The course(s) taken are: " + aStudent.getCourse());
messagePane.print("Now it is...: ");
String course = keyboard.nextLine();
result = aStudent.setCourse(course);
messagePane.println("Update status: "
+ Student.getDescriptionOfReturnedSignal(result));
messagePane.println("Finalized Changes: " + singleLineStudentDisplay(aStudent));
}
private void updateGpa(Student aStudent){
assert aStudent != null: "Null parameter supplied to School.updateGpa()";
int result;
messagePane.println("GPA is: " + aStudent.getGpa());
messagePane.print("Now it is... (Must be Postive Number): ");
Scanner inputScanner = new Scanner(keyboard.nextLine());
double gpa;
if (inputScanner.hasNextDouble())
{
gpa = keyboard.nextDouble();
}
else
{
messagePane.println("You entered something other than a number - " +
"GPA is back to default " + Student.DEFAULT_GPA);
gpa = Student.DEFAULT_GPA;
}
result = aStudent.setGPA(gpa);
messagePane.println("Update status: " +
Student.getDescriptionOfReturnedSignal(result));
messagePane.println("Finalized Changes" + singleLineStudentDisplay(aStudent));
}
private void gpa() {
int studentCount = nextAvailablePosition;
if (studentCount > 0) {
messagePane.println("\nThe student database has " + studentCount + " student(s):");
messagePane.printf(" %25s, %-35s (%4s, %13s) %-30s %9s \n",
"Grade/Standing", "Student's Name", "Birthday", "ID Number",
"Course(s) taken", "GPA");
int index = 0;
while (index < studentCount) {
Student temp = classroom[index];
messagePane.printf(" %25s, %-35s (%4d, %-13s) %-30s %9.2f \n",
temp.getGrade().length() < 25
? temp.getGrade() : temp.getGrade().substring(0, 25),
temp.getName().length() < 35
? temp.getName() : temp.getName().substring(0, 35),
temp.getBirthday(),
temp.getID(),
temp.getCourse().length() < 30
? temp.getCourse() : temp.getCourse().substring(0, 30),
temp.getGpa());
index++;
}
} else {
messagePane.println("The classroom is currently empty.");
}
}
private Student locateStudent() {
Student aStudent;
messagePane.print("\nEnter the Student's ID you would like to find: ");
Scanner inputScanner = new Scanner(keyboard.nextLine());
if (inputScanner.hasNext()) {
String searchID = inputScanner.next();
aStudent = searchForStudentInArray(searchID);
} else {
messagePane.println("Please enter an ID");
aStudent = null;
}
return aStudent;
}
private String singleLineStudentDisplay(Student aStudent) {
assert aStudent != null : "Null parameter supplied to School.singleLineStudentDisplay()";
return aStudent.getGrade() + ", " + aStudent.getName() + " ("
+ aStudent.getID() + ", " + aStudent.getBirthday() + ") "
+ aStudent.getCourse() + " GPA: " + aStudent.getGpa();
}
}
这是学生:
package student;
public class Student {
public static final int SET_SUCCESSFUL = 0;
public static final int GRADE_CANNOT_BE_NULL = -1;
public static final int GRADE_CANNOT_BE_EMPTY = -2;
public static final int GRADE_MUST_BE_AT_LEAST_SIX_CHARACTERS = -3;
public static final int NAME_CANNOT_BE_NULL = -11;
public static final int NAME_CANNOT_BE_EMPTY = -12;
public static final int BIRTHDAY_MUST_BE_EXACTLY_SIX_DIGITS_CHECK_FORMAT = -24;
public static final int ID_MUST_BE_ONE_OR_SEVEN_NUMBERS = -31;
public static final int ID_CANNOT_BE_NULL = -32;
public static final int ID_CANNOT_BE_EMPTY = -33;
public static final int COURSE_CANNOT_BE_EMPTY = -41;
public static final int GPA_CANNOT_BE_NEGATIVE = -51;
public static final double DEFAULT_GPA = 0.0;
private String name;
private String grade;
private int birthday;
private String id;
private String course;
private double gpa;
private Student() {
super();
}
public static Student create(String theName,
String theGrade, int theBirthday,String theId,
String theCourse, double theGpa) throws Exception {
Student newStudent = new Student();
int result;
result = newStudent.setName(theName);
if (result != SET_SUCCESSFUL) {
throw new Exception(Student.getDescriptionOfReturnedSignal(result));}
result = newStudent.setGrade(theGrade);
if (result != SET_SUCCESSFUL) {
throw new Exception(Student.getDescriptionOfReturnedSignal(result));}
result = newStudent.setBirthday(theBirthday);
if (result != SET_SUCCESSFUL) {
throw new Exception(Student.getDescriptionOfReturnedSignal(result));}
result = newStudent.setId(theId);
if (result != SET_SUCCESSFUL) {
throw new Exception(Student.getDescriptionOfReturnedSignal(result));}
result = newStudent.setCourse(theCourse);
if (result != SET_SUCCESSFUL) {
throw new Exception(Student.getDescriptionOfReturnedSignal(result));}
result = newStudent.setGPA(theGpa);
if (result != SET_SUCCESSFUL) {
throw new Exception(Student.getDescriptionOfReturnedSignal(result));}
return newStudent;}
// <editor-fold defaultstate="collapsed" desc="------------------------------------------------------------------------------"> /* */
// </editor-fold>
public String getName() {
return name;}
public String getGrade() {
return grade;}
public int getBirthday() {
return birthday;}
public String getID() {
return id;}
public String getCourse() {
return course;}
public double getGpa() {
return gpa;}
@Override
public String toString() {
StringBuilder temp = new StringBuilder(name);
temp.append("\nwho is a ");
temp.append(grade);
temp.append("\nwith a Birthday on ");
temp.append(birthday);
temp.append("\nID Number ");
temp.append(id);
temp.append("\nwho takes ");
temp.append(course);
temp.append("\nwith a GPA of ");
temp.append(gpa);
temp.append(' ');
return temp.toString();
}
public static String getDescriptionOfReturnedSignal(int aSignal) {
if (aSignal == SET_SUCCESSFUL) {
return "SET_SUCCESSFUL";}
if (aSignal == GRADE_CANNOT_BE_NULL) {
return "GRADE_CANNOT_BE_NULL";}
if (aSignal == GRADE_CANNOT_BE_EMPTY) {
return "GRADE_CANNOT_BE_EMPTY";}
if (aSignal == GRADE_MUST_BE_AT_LEAST_SIX_CHARACTERS) {
return "GRADE_MUST_BE_AT_LEAST_SIX_CHARACTERS";}
if (aSignal == NAME_CANNOT_BE_NULL) {
return "NAME_CANNOT_BE_NULL";}
if (aSignal == NAME_CANNOT_BE_EMPTY) {
return "NAME_CANNOT_BE_EMPTY";}
if (aSignal == BIRTHDAY_MUST_BE_EXACTLY_SIX_DIGITS_CHECK_FORMAT) {
return "BIRTHDAY_MUST_BE_EXACTLY_SIX_DIGITS_CHECK_FORMAT";}
if (aSignal == ID_CANNOT_BE_NULL) {
return "ID_CANNOT_BE_NULL";}
if (aSignal == ID_CANNOT_BE_EMPTY) {
return "ID_CANNOT_BE_EMPTY";}
if (aSignal == ID_MUST_BE_ONE_OR_SEVEN_NUMBERS) {
return "ID_MUST_BE_ONE_OR_SEVEN_NUMBERS";}
if (aSignal == COURSE_CANNOT_BE_EMPTY) {
return "COURSE_CANNOT_BE_EMPTY";}
if (aSignal == GPA_CANNOT_BE_NEGATIVE) {
return "GPA_CANNOT_BE_NEGATIVE";}
return "Sorry, but the signal value " + aSignal + " is not recognized.";
}
public int setName(String theName) {
if (theName == null) {
return NAME_CANNOT_BE_NULL;
}
String trimmedName = theName.trim();
if (trimmedName.isEmpty()) {
return NAME_CANNOT_BE_EMPTY;
}
name = trimmedName;
return SET_SUCCESSFUL;
}
public int setGrade(String theGrade) {
if (theGrade == null) {
return GRADE_CANNOT_BE_NULL;
}
String trimmedGrade = theGrade.trim();
if (trimmedGrade.isEmpty()) {
return GRADE_CANNOT_BE_EMPTY;
}
if (trimmedGrade.length() < 6) {
return GRADE_MUST_BE_AT_LEAST_SIX_CHARACTERS;
}
grade = trimmedGrade;
return SET_SUCCESSFUL;
}
public int setBirthday(int theBirthday) {
if (theBirthday <= 7) {
return BIRTHDAY_MUST_BE_EXACTLY_SIX_DIGITS_CHECK_FORMAT;
}
birthday = theBirthday;
return SET_SUCCESSFUL;
}
private int setId(String theId) {
if (theId == null) {
return ID_CANNOT_BE_NULL;
}
String trimmedId = theId.trim();
if (trimmedId.isEmpty()) {
return ID_CANNOT_BE_EMPTY;
}
if (trimmedId.length() != 1 && trimmedId.length() != 7) {
return ID_MUST_BE_ONE_OR_SEVEN_NUMBERS;
}
id = trimmedId;
return SET_SUCCESSFUL;
}
public int setCourse(String theCourse) {
if (theCourse == null) {
course = "";
return SET_SUCCESSFUL;
}
String trimmedCourse = theCourse.trim();
if (trimmedCourse.isEmpty()) {
return COURSE_CANNOT_BE_EMPTY;
}
course = trimmedCourse;
return SET_SUCCESSFUL;
}
public int setGPA(double theGPA) {
if (theGPA < 0.0) {
return GPA_CANNOT_BE_NEGATIVE;
}
gpa = theGPA;
return SET_SUCCESSFUL;
}
/*
public String getbirthday() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
*/
}
最佳答案
没有足够的声誉来发表评论,因此添加为答案。
您必须删除当前代码并仅指定您尝试的代码片段 1) 读取输入,我看到您正在使用扫描仪 2) 您的排序方法是什么
考虑到这是您的类计划,为了指导您进行此操作,请查看以下内容:
如何读取输入: How can I read input from the console using the Scanner class in Java?
比较:
https://www.baeldung.com/java-comparator-comparable
When should a class be Comparable and/or Comparator?
然后排序:
https://www.geeksforgeeks.org/collections-sort-java-examples/
https://www.geeksforgeeks.org/arrays-sort-in-java-with-examples/
关于Java排序算法类数据结构项目遇到的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55068677/
初学者 android 问题。好的,我已经成功写入文件。例如。 //获取文件名 String filename = getResources().getString(R.string.filename
我已经将相同的图像保存到/data/data/mypackage/img/中,现在我想显示这个全屏,我曾尝试使用 ACTION_VIEW 来显示 android 标准程序,但它不是从/data/dat
我正在使用Xcode 9,Swift 4。 我正在尝试使用以下代码从URL在ImageView中显示图像: func getImageFromUrl(sourceUrl: String) -> UII
我的 Ubuntu 安装 genymotion 有问题。主要是我无法调试我的数据库,因为通过 eclipse 中的 DBMS 和 shell 中的 adb 我无法查看/data/文件夹的内容。没有显示
我正在尝试用 PHP 发布一些 JSON 数据。但是出了点问题。 这是我的 html -- {% for x in sets %}
我观察到两种方法的结果不同。为什么是这样?我知道 lm 上发生了什么,但无法弄清楚 tslm 上发生了什么。 > library(forecast) > set.seed(2) > tts lm(t
我不确定为什么会这样!我有一个由 spring data elasticsearch 和 spring data jpa 使用的类,但是当我尝试运行我的应用程序时出现错误。 Error creatin
在 this vega 图表,如果我下载并转换 flare-dependencies.json使用以下 jq 到 csv命令, jq -r '(map(keys) | add | unique) as
我正在提交一个项目,我必须在其中创建一个带有表的 mysql 数据库。一切都在我这边进行,所以我只想检查如何将我所有的压缩文件发送给使用不同计算机的人。基本上,我如何为另一台计算机创建我的数据库文件,
我有一个应用程序可以将文本文件写入内部存储。我想仔细看看我的电脑。 我运行了 Toast.makeText 来显示路径,它说:/数据/数据/我的包 但是当我转到 Android Studio 的 An
我喜欢使用 Genymotion 模拟器以如此出色的速度加载 Android。它有非常好的速度,但仍然有一些不稳定的性能。 如何从 Eclipse 中的文件资源管理器访问 Genymotion 模拟器
我需要更改 Silverlight 中文本框的格式。数据通过 MVVM 绑定(bind)。 例如,有一个 int 属性,我将 1 添加到 setter 中的值并调用 OnPropertyChanged
我想向 Youtube Data API 提出请求,但我不需要访问任何用户信息。我只想浏览公共(public)视频并根据搜索词显示视频。 我可以在未经授权的情况下这样做吗? 最佳答案 YouTube
我已经设置了一个 Twilio 应用程序,我想向人们发送更新,但我不想回复单个文本。我只是想让他们在有问题时打电话。我一切正常,但我想在发送文本时显示传入文本,以确保我不会错过任何问题。我正在使用 p
我有一个带有表单的网站(目前它是纯 HTML,但我们正在切换到 JQuery)。流程是这样的: 接受用户的输入 --- 5 个整数 通过 REST 调用网络服务 在服务器端运行一些计算...并生成一个
假设我们有一个名为 configuration.js 的文件,当我们查看内部时,我们会看到: 'use strict'; var profile = { "project": "%Projec
这部分是对 Previous Question 的扩展我的: 我现在可以从我的 CI Controller 成功返回 JSON 数据,它返回: {"results":[{"id":"1","Sourc
有什么有效的方法可以删除 ios 中 CBL 的所有文档存储?我对此有疑问,或者,如果有人知道如何从本质上使该应用程序像刚刚安装一样,那也会非常有帮助。我们正在努力确保我们的注销实际上将应用程序设置为
我有一个 Rails 应用程序,它与其他 Rails 应用程序通信以进行数据插入。我使用 jQuery $.post 方法进行数据插入。对于插入,我的其他 Rails 应用程序显示 200 OK。但在
我正在为服务于发布请求的 API 调用运行单元测试。我正在传递请求正文,并且必须将响应作为帐户数据返回。但我只收到断言错误 注意:数据是从 Azure 中获取的 spec.js const accou
我是一名优秀的程序员,十分优秀!