- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我几天前问了以下问题,但仍然有点麻烦。
“以下为原帖”我想存储一个学生姓名,每个姓名都有两个与该姓名关联的 ArrayList。我想将所有内容都放在一个类(class) Student_quizes 或类似的东西中
所以我主要是尝试将 studentName、quizNames 数组列表和 quizScores 数组列表存储在一个对象中。 quizNames 和 quizScores 将平行。
我不确定我是否以正确的方式进行这件事我一整天都在尝试这个并且很困惑,有没有人对我如何更好地做到这一点有任何建议。
如果我的问题令人困惑,我很抱歉,我想程序会像这样运行。
input student name
michael
input quiz
science
input quiz score
80
add another quiz Y/N?
Y
input quiz ...
add another student Y/N?
Y ...
Student name : michael
quiz name : science, Score: 80
quiz name : maths, Score : 85
student name : joe
Quiz name : science, Score 60
目前我的代码到处都是,但我会发布我的代码。
这是主要的
package Student_Quizes;
import java.util.ArrayList;
import java.util.Scanner;
import static student.student_main.print;
public class Student_quizes_main {
public static void main(String[] args) {
boolean addStudents = true;
addStudent();
}
public static void addStudent() {
ArrayList<Student_Quizes> students = new ArrayList<>();
Scanner in = new Scanner(System.in);
System.out.println("add student");
String studentName;
String Continue;
int quizScore;
String quizName;
boolean addStudents = true;
boolean addQuiz = true;
while (addStudents) {
System.out.println("Student Name");
studentName = in.next();
while (addQuiz) {
System.out.println("Quiz Name");
quizName = in.next();
System.out.println("average Score");
quizScore = in.nextInt();
students.add(new Student_Quizes(quizName, quizScore));
System.out.println("Add another Quiz Y/N");
Continue = in.next();
if (Continue.equalsIgnoreCase("n")) {
addQuiz = false;
}
}
System.out.println("Add another Student Y/N");
Continue = in.next();
if (!Continue.equalsIgnoreCase("n")) {
addQuiz = true;
} else {
addStudents = false;
}
}
print(students);
}
}
这是我的类(class)
package Student_Quizes;
import java.util.ArrayList;
public class Student_Quizes {
private String studentName;
private String quizName;
private int score;
ArrayList<String> quizNames = new ArrayList<>();
ArrayList<Integer> quizScores = new ArrayList<>();
public Student_Quizes() {
studentName = "";
quizNames.add("");
quizScores.add(0);
}
public Student_Quizes(String studentName, ArrayList QuizNames, ArrayList quizScores) {
this.studentName = studentName;
this.quizNames.add(quizName);
this.quizScores.add(score);
}
public void print() {
System.out.println("Name:\t\t" + this.studentName);
System.out.println("Quiz Name:\t" + this.quizNames);
System.out.println("Quiz Score:\t" + this.quizScores);
}
}
从那以后我重新编写了我的代码我现在的代码
这是主要的
包学生;
导入java.util.ArrayList;导入 java.util.Scanner;
公共(public)课 Student_main {
public static void main(String[] args) {
//Create ArrayList of student objects
ArrayList<Student> students = new ArrayList<>();
String name;
boolean addStudent = true;
String Continue;
Scanner in = new Scanner(System.in);
//loop to add multiple students
while (addStudent) {
System.out.println("Student Name");
name = in.next();
//calls the method to add student information
addStudents(name, students);
System.out.println("Would you like to add another Student? Y/N ");
Continue = in.next();
//if user does not type n it will continue
if (Continue.equalsIgnoreCase("n")) {
addStudent = false;
}
}
System.out.println(students.toString());
}
public static void addStudents(String name, ArrayList<Student> students) {
//Parralell arrays for quiz names and quiz scores
ArrayList<String> quizNames = new ArrayList<>();
ArrayList<Integer> quizScores = new ArrayList<>();
boolean addQuiz = true;
String Continue;
Scanner in = new Scanner(System.in);
// Loop to continue adding quizzes
while (addQuiz) {
//Method yo add quiz names and scores
addQuizNames(quizNames);
addQuizScores(quizScores);
System.out.println("Would yo like to add another Quiz? Y/N ");
Continue = in.next();
if (Continue.equalsIgnoreCase("n")) {
addQuiz = false;
// adds the new student passing the students name and quiz info
students.add(new Student(name, quizNames, quizScores));
}
}
}
public static void addQuizNames(ArrayList<String> quizNames) {
String quizName;
Integer quizScore;
Scanner in = new Scanner(System.in);
System.out.println("Enter Quiz Name");
quizName = in.next();
quizNames.add(quizName);
}
public static void addQuizScores(ArrayList<Integer> quizScores) {
Integer quizScore;
Scanner in = new Scanner(System.in);
System.out.println("Enter Quiz Score");
quizScore = in.nextInt();
quizScores.add(quizScore);
}
类包学生;
导入java.util.ArrayList;
公开课学生{
private String name;
private static ArrayList<String> quizNames = new ArrayList<>();
private static ArrayList<Integer> quizScores = new ArrayList<>();
public Student(String name, ArrayList<String> quizNames, ArrayList<Integer> quizScores) {
this.name = name;
Student.quizNames = quizNames;
Student.quizScores = quizScores;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void setQuizNames(ArrayList<String> quizNames) {
Student.quizNames = quizNames;
}
public static void setQuizScores(ArrayList<Integer> quizScores) {
Student.quizScores = quizScores;
}
public ArrayList<String> getQuizNames() {
return quizNames;
}
public ArrayList<Integer> getQuizScores() {
return quizScores;
}
@Override
public String toString() {
// adds student info to a formated string
StringBuilder out = new StringBuilder();
for (int i = 0; i < quizScores.size(); i++) {
out.append("\n quiz : ").append(quizNames.get(i)).append("\t\tScore : ").append(quizScores.get(i));
}
String finalString = out.toString();
return "\n\nStudent : " + name + finalString;
}
问题我现在遇到的问题是 quizNames 和 QuizScores。我可以制作很多学生对象,每个学生的名字都是正确的,但每个学生的测验信息都是一样的。它使用最后一个输入的学生的测验信息,所以它基本上覆盖了每个学生对象的测验信息。
任何输入都非常感谢,谢谢大家:)
最佳答案
一些快速提示:
public class Student_Quizes {
private String studentName;
private String quizName; ...
实际上是一个好的开始,但是你在这里弄错了:
this.quizNames.add(quizName);
this.quizScores.add(score);
您看:您希望您的类 Student_Quizes 允许添加两条信息。因此:您没有在构造函数中将任何内容放入您的两个列表中。相反,您添加一个方法,例如
public void addQuizInfo(String name, Integer score) {
quizNames.add(name);
quizScores.add(score);
}
到你的类(class)。然后,您只需根据用户的输入继续调用此方法!
你的问题基本上是你“反复”把东西放在一起。相反,您应该清楚地将事物分开。为了更清楚地说明这一点;您的类(class)名称已经走错了方向。称它为 Student
... 然后想一想学生有什么属性 --- 他有一个名字,然后他有一个包含他所从事的测验的列表。
因此,您首先创建一个学生对象:
Student newStudent = new Student(name);
然后你使用我上面展示的那个方法:
student.addQuiz(quizname, score);
最后:您的代码甚至无法编译。您在 Student_Quizes 中声明您的列表是
ArrayList<String>
例如。这样的列表仅接受字符串。因此,您要他们添加的代码……另一个列表 根本无效!
最后:你应该使用List、Map等“接口(interface)”类型作为类型——你只使用ArrayList等具体实现类来调用new,比如
List<Integer> scores = new ArrayList<>();
关于java - 如何在一个对象中存储一个字符串和两个并行数组列表。 ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40162647/
如标题所示,ans_list是一个答案列表,ans_index是一个数字(答案在词汇表中的索引,但与atm无关) 这里生成的 tree.anslist 是什么? (例如,仅针对第一个),忽略迭代。 f
我目前将用户的输入存储在逗号分隔的列表中,如下所示: Userid | Options 1 | 1,2,5 用户在一个数组形式中勾选一组选项,然后用逗号连接起来 1,2,5 然后 MySQ
我目前将用户的输入存储在逗号分隔的列表中,如下所示: Userid | Options 1 | 1,2,5 用户在一个数组形式中勾选一组选项,然后用逗号连接起来 1,2,5 然后 MySQ
我想知道如何完全展平列表和包含它们的东西。除其他外,我想出了一个解决方案,它可以将具有多个元素的东西滑倒并将它们放回原处,或者在滑倒后将具有一个元素的东西拿走。 这与 How do I “flatte
我想知道如何完全展平列表和包含它们的东西。除其他外,我想出了一个解决方案,它可以将具有多个元素的东西滑倒并将它们放回原处,或者在滑倒后将带有一个元素的东西拿走。 这与 How do I “flatte
这个问题已经有答案了: Convert nested list to 2d array (3 个回答) 已关闭 7 年前。 java中有没有快捷方式可以转换 List> 到 String[][] ?
我在排序时遇到问题 List> 。我创建了一个自定义比较器,在其中编写了对数据进行排序的代码。 public class CustomComparator implements Comparator
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Java Generics: Cannot cast List to List? 我只是想知道为什么下面的java代
试图想出一个 LINQy 方法来做到这一点,但我什么也没想到。 我有一个对象列表<>,其中包含一个属性,该属性是逗号分隔的字母代码列表: lst[0].codes = "AA,BB,DD" lst[1
假设我有这些任务: points = [] point = (1, 2) 我怎么会这样做: points += point 它工作得很好,并且给了我点 = [1, 2]。但是,如果我这样做: poin
如何在 scala 中将 List[Task[List[Header]]] 类型转换为 Task[List[Header]]。 我有一个方法返回 Task[List[Header]] 并多次调用 do
如何在 Java 中查找二维列表的元素? 我有一个参数为 List> 的函数我想知道如何找到这个列表的行和列。 最佳答案 如果你喜欢 List> obj 然后你就可以像这样访问 obj.get(cur
分配 List到 List工作正常。 分配 List>到 List>不编译。 代码 public class Main { public static void main(String[] a
我正在用 Java 编写一个方法,该方法必须接收并迭代 Serializable 的 List。 有什么区别: public void myMethod(List list) { } 和 public
我看到很多人想用 mvvm 更新网格/列表/树的一部分,但他们不想刷新整个列表。 对于所有遇到此问题的人,我做了以下示例。 希望这对你有用。 最佳答案 这是一个简单的例子。整个代码中最重要的是: Bi
我正在为现有的 C++ 库编写包装器,该库使用列表,其中 T 是自定义结构。我被建议使用 vector 而不是列表,但我试图避免修改库。 为了更好地理解这个场景,我做了一个简单的应用程序,使用一个列表
List list List list 这两种声明有什么区别吗? 谢谢, 最佳答案 是的。 List可以包含所有派生自 Base 的不同事物的混合物. List包含同质项(从某种意义上说,它们必须全部
有人可以尽可能详细地解释以下类型之间的区别吗? List List List 让我更具体一点。我什么时候想使用 // 1 public void CanYouGiveMeAnAnswer(List l
我有一个元组列表,每个元组都是一对列表。所以我的数据看起来像: mylist = [(['foo', 'bar'], ['bar', 'bar']),(['bar', 'bar'],['bar', '
也许是一个时髦的标题,但我遇到了以下问题: 给定一个类型为 (a * b) list 的列表,我想创建一个类型为 (a * b list) list 的新列表。一个例子: 给定列表 let testL
我是一名优秀的程序员,十分优秀!