Java 在单个循环中打印字符串和整数

Java 在单个循环中打印字符串和整数,java,Java,抱歉,如果这是一个模糊的问题,但我查找了很多,并在这里坚持我的代码 我想做一个循环,在一行上打印字符串,在下一行上打印整数,我的代码是: public class StudentResult { public static void main(String[] args) { // Creating Student Objects Student student1 = new Student("Bob", 45); Student stud

抱歉,如果这是一个模糊的问题,但我查找了很多,并在这里坚持我的代码

我想做一个循环,在一行上打印字符串,在下一行上打印整数,我的代码是:

public class StudentResult {
    public static void main(String[] args) {
        // Creating Student Objects
        Student student1 = new Student("Bob", 45);
        Student student2 = new Student("John", 70);

        // Making Arrays for students and marks
        String[] names = {student1.getStudentName(), student2.getStudentName()};
        int[] marks = { student1.getStudentMarks(), student2.getStudentMarks() };

        // Using for loop to print both names and marks

        for (int mark : marks) {
            // THIS IS THE PART I AM STUCK WITH
            if (mark == student1.getStudentMarks()) System.out.println(names[0]);
            else if (mark == student2.getStudentMarks()) System.out.println(names[1]);

            System.out.println("The marks are " + mark);
             /* Output is :
                Bob
                The marks are 45
                John 
                The marks are 70
             */
        }
    }
}
有没有办法在for循环之后编辑If/Else语句,这样如果我添加另一个student对象,我只需编辑数组,循环本身就可以正常工作。

这里可以使用索引for循环而不是for each循环(假设
名称
标记
数组长度相同

for(int i = 0; i < marks.length; i++) {
    System.out.println(names[i]);
    System.out.println("The marks are " + marks[i]);
}
for(int i=0;i
在这里,您可以使用索引for循环,而不是for each循环(假设
名称和
标记的数组长度相同)

for(int i = 0; i < marks.length; i++) {
    System.out.println(names[i]);
    System.out.println("The marks are " + marks[i]);
}
for(int i=0;i
如果我理解正确,您可以尝试创建一个学生数组:

Student student1 = new Student("Bob", 45);
Student student2 = new Student("John", 70);

Student[] students = { student1, student2 };

for (Student student : students) {
    System.out.println(student.getStudentName());
    System.out.println("The marks are " + getStudentMarks());
}

如果我理解正确,你可以试着让一组学生:

Student student1 = new Student("Bob", 45);
Student student2 = new Student("John", 70);

Student[] students = { student1, student2 };

for (Student student : students) {
    System.out.println(student.getStudentName());
    System.out.println("The marks are " + getStudentMarks());
}

不使用数组,您可以使用
列表
,例如
ArrayList

List<Student> students = Arrays.asList(
    new Student("Bob", 45),
    new Student("John", 70)
);
在这里,您可以
添加
删除
元素,而在第一种情况下,您将得到一个
不支持操作异常

然后可以迭代
列表

for (Student s : students) {
    System.out.println(s.getStudentName());
    System.out.println("The marks are " + s.getStudentMarks());
}
或者,您可以只使用阵列:

Student[] students = new Student[] { 
    new Student("Bob", 45),
    new Student("John", 70)
};

for (Student s : students) {
    // same as above
}

有关文档,请参阅和。

可以使用
列表
,例如
ArrayList
,而不是使用数组

List<Student> students = Arrays.asList(
    new Student("Bob", 45),
    new Student("John", 70)
);
在这里,您可以
添加
删除
元素,而在第一种情况下,您将得到一个
不支持操作异常

然后可以迭代
列表

for (Student s : students) {
    System.out.println(s.getStudentName());
    System.out.println("The marks are " + s.getStudentMarks());
}
或者,您可以只使用阵列:

Student[] students = new Student[] { 
    new Student("Bob", 45),
    new Student("John", 70)
};

for (Student s : students) {
    // same as above
}

有关文档,请参阅和。

您可以通过索引对这两个数组进行迭代来访问它们

int length = Math.min(names.length, marks.length);
for (int i=0; i< length; i++) {
  System.out.println(names[i] + "\n" + "The marks are " + marks[i]);
}
//If something is left over in any one of the arrays print them here.
int length=Math.min(name.length,marks.length);
for(int i=0;i
您可以在索引的帮助下通过迭代访问这两个数组

int length = Math.min(names.length, marks.length);
for (int i=0; i< length; i++) {
  System.out.println(names[i] + "\n" + "The marks are " + marks[i]);
}
//If something is left over in any one of the arrays print them here.
int length=Math.min(name.length,marks.length);
for(int i=0;i
不太清楚你在问什么。我想,你为什么不循环一下
学生的列表呢?直接将他们添加到
列表中
好吗?请你澄清一下你到底想实现什么?我得到了答案,我想要的是用一个简单的语句替换那些if/else语句,这个语句做了同样的事情,但考虑周到坦率地说,谢谢你的时间。我不太清楚你在问什么。我想,你为什么不循环一下
学生
的列表。直接将他们添加到
列表
中?请你澄清一下你到底想实现什么?我得到了答案,我想要的是用一个简单的语句替换那些if/else语句同样的事情,但始终如一地,谢谢你的时间,谢谢你这么多,这么简单的解决方案,但我被困了这么久,但无论如何学到了很多。成功了,谢谢你这么多,这么简单的解决方案,但我困了这么久,但无论如何学到了很多。这解决了OP问题,但他的方法可能不好。他应该打印一系列学生们改为使用多个属性数组。是的,我同意@Rcordoval。但我想他可能会得到名称和标记的数组(实际上不是他自己构建的)-但它们是
学生
对象的属性。因此,我认为这可以帮助他..你是什么意思?他显然在构造学生并将其转储到数组中。无论如何,这是一个有效的答案。干杯!@Rcordoval:我的意思是有人可以构造数组并通过代码流将其传递给他-出于演示目的,他可能会这样做我在这里添加了它。我想是这样的。可能不是这样:-)谢谢!这解决了OP问题,但他的方法可能不好。他应该打印一个学生数组而不是多个属性数组。是的,我同意@Rcordoval。但我想他可能会得到名称和标记的数组(实际上不是他自己建造的)-但它们是
学生
对象的属性。因此,我认为这可以帮助他..你是什么意思?他显然在构造学生并将其转储到数组中。无论如何,这是一个有效的答案。干杯!@Rcordoval:我的意思是有人可以构造数组并通过代码流将其传递给他-出于演示目的,他可能会这样做我把它加在这里了……我想是这样的……情况可能不是这样:-)谢谢!这真是个好主意,谢谢,我一定会记住的。这真是个好主意,谢谢,我一定会记住的。我不知道这个方法,我想我现在必须查一下才能更好地理解它,thanks@AneesUrRahman我用更多信息更新了我的答案。
asList
methodreturns是一个不可变列表,因此您可能需要根据需要使用其他内容。有关更多详细信息,请参阅答案。@WilliamBurnham我可以建议您将有关列表不可变性的内容移到数组示例下面(或完全删除它)?基本上与问题无关。我不知道这个方法,我想我现在必须查一下才能更好地理解它,thanks@AneesUrRahman我用更多信息更新了我的答案。
asList
方法返回一个不可变的列表,因此您可能需要根据需要使用其他内容。请参阅答案f