全新的Java,刚刚在上周五开始进行Javascript培训后开始。我有一个练习要求以下内容(我已经加粗我尚未完成的所有内容):
提供有关班级学生的信息
提示用户询问某位学生
根据用户提交的信息提供适当的回复
询问用户是否想了解其他学生
帐户包含例外的无效用户输入
尝试合并IndexOutOfBoundsException和 抛出:IllegalArgumentException
让用户轻松 - 告诉他们可以获得哪些信息
使用并行数组来保存学生数据
我已经搜索了StackOverflow的答案,并发现了许多有用的东西,但这似乎与整数有关,而不是字符串......虽然它可能只是我的愚蠢的猴子大脑。
我不相信"尝试合并IndexOutOfBoundsException和 抛出:IllegalArgumentException"教学是一项要求,所以不要觉得你必须包含这些内容。
任何有用的提示或方向都会让我非常感激......并且请不要嘲笑我的代码,尽管建设性的批评很有必要。
没有进一步的麻烦:
import java.util.Arrays;
import java.util.Scanner;
public class Students {
private static String[] students = {"John", "Ben", "Lisa", "Stewart", "Cora"};
private static int[] grades = {79, 86, 90, 89, 99};
public static void main(String args[]) {
System.out.println(Arrays.toString(students));
Scanner kb = new Scanner(System.in);
boolean userChoice = true;
String userInput;
String choice;
while(userChoice) {
System.out.println("Please enter a Student's name to get their grade: ");
userInput = kb.nextLine();
getGrades(userInput);
System.out.println("Continue? (y/n)");
choice = kb.nextLine();
if (choice.equalsIgnoreCase("n")) {
userChoice = false;
}
}
kb.close();
}
private static void getGrades(String userInput) {
int length = students.length;
for(int i = 0; i < length; i++) {
if(userInput.equals(students[i])) {
System.out.println(userInput + "'s " + "grade is: " + grades[i]);
}
}
}
}
这是我输出的一个例子:
[John,Ben,Lisa,Stewart,Cora]
请输入学生的姓名以获得成绩:
本
Ben的成绩是:86
继续? (Y / N)
ý
请输入学生的姓名以获得成绩:
莉莎
Lisa的成绩是:90
继续? (Y / N)
名词的
处理完成,退出代码为0
顺便说一下,虽然我今天刚刚报名参加了这个问题的帮助,但这个社区在学习Javascript时对我来说是个天赐之物,所以这是对你所有光荣的混蛋的正式感谢!
答案 0 :(得分:0)
我自己想出来:P
结束从我的学生数组创建一个列表并使用contains方法将用户输入与我的学生列表进行比较,如果输入与数组中的学生不匹配,则会抛出异常并打印“Not a valid”学生的名字“并询问您是否要输入其他名称。
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class Students {
private static String[] students = {"John", "Ben", "Lisa", "Stewart", "Cora"};
private static int[] grades = {79, 86, 90, 89, 99};
private static String[] behavior = {"aggressive", "distractable", "attentive", "disruptive", "angelic"};
private static List myList = Arrays.asList(students);
public static void main(String args[]) {
Scanner kb = new Scanner(System.in);
boolean userChoice = true;
String userInput;
String choice;
while(userChoice) {
System.out.println(myList);
System.out.println("Please enter a student's name (case-sensitive) to get their progress report: ");
userInput = kb.nextLine();
try {
if (myList.contains(userInput)) {
getGrades(userInput);
} else {
throw new IllegalArgumentException();
}
} catch (IllegalArgumentException e) {
System.out.println("Not a valid student's name");
}
System.out.println("Would you like to enter another student's name? (y/n)");
choice = kb.nextLine();
if (choice.equalsIgnoreCase("n")) {
userChoice = false;
}
}
}
private static void getGrades(String userInput) {
for(int i = 0; i < students.length; i++) {
if(userInput.equals(students[i])) {
System.out.println(userInput + "'s " + "grade is " + grades[i] + " and they are " + behavior[i]);
}
}
}
}