Java

2013-10-11 13 views
6

'daki her döngü için eşzamanlı olarak iki dizide yineleme Öğrencinin adları (String []) ve karşılık gelen işaretler (int []) farklı dizilerde saklanır.Java

Java'daki her döngü için birlikte her iki dizide de nasıl yineleyebilirim?

void list() { 

    for(String s:studentNames) { 
     System.out.println(s); //I want to print from marks[] alongside. 
    } 
} 

Aynı döngüde bir önemsiz yol, dizin değişkenini kullanıyor olabilir. Yapmanın iyi bir yolu var mı?

+0

Neden normaldir (bir indeks değişkeni ile: alıcıları ve ayarlayıcıları kullanmalı ve bunun yerine bir dizinin bir List kullanmalıdır ancak bu noktayı gösterir - İşte

ÇOK basit gösteri) yeterince iyi değil? –

+0

bir haritayı düşünün. hashmap –

+0

gibi, ayrı dizilerde bir ilişkisi olan şeyleri tutmak için çok güzel bir tasarım olmadığını belirtmek gerekir. Bunun yerine bir harita kullanmalı veya isim ve işaret özniteliklerine sahip basit bir sınıf oluşturmalı ve bu nesnelerin tek bir dizisini (veya listesini) kullanmalısınız. –

cevap

6

yatan yanlısı blem aslında her iki diziyi birbirine bağlamanız ve tek bir dizide yinelemenizdir.

class Student { 
    String name; 
    int mark; 
} 
Student[] students = new Student[10]; 

for (Student s : students) { 
    ... 
} 
10

Böyle bir indeksi normal for döngü kullanarak bunu yapmak gerekir:

if (marks.length != studentNames.length) { 
    ... // Something is wrong! 
} 
// This assumes that studentNames and marks have identical lengths 
for (int i = 0 ; i != marks.length ; i++) { 
    System.out.println(studentNames[i]); 
    System.out.println(marks[i]); 
} 

Daha iyi bir yaklaşım onun/onu işaretleri, böyle birlikte bir öğrenci saklamak için bir sınıf kullanarak olurdu: ikisini de aynı boyutu varsa

class StudentMark { 
    private String name; 
    private int mark; 
    public StudentMark(String n, int m) {name=n; mark=m; } 
    public String getName() {return name;} 
    public int getMark() {return mark;} 
} 

for (StudentMark sm : arrayOfStudentsAndTheirMarks) { 
    System.out.println(sm.getName()); 
    System.out.println(sm.getMark()); 
} 
+1

Anlaşmalı. Bunun için "foreach" varyantı ile bunu elde etmek için bir yolu yoktur. –

+0

@StefanWinkler En azından öğrencileri ve işaretlerini tek bir nesnede birleştirmeden değil. – dasblinkenlight

+1

Eğer yapabilirsem +2 veririm. mükemmel cevap + daha iyi çözüm –

4

, ben yazardım:

for(int i = 0; i<marks.length; i++) { 
    String names= studentNames[i] 
    int mark = marks[i];  

} 
+1

işaretleri bir int dizisidir. onu düzelttim –