2017-11-15 9 views
0

これは非常に具体的な質問です。特に役立つものは何も見つかりません。個々の変数にアクセスするのに問題はありますが、各ノードにはStudentオブジェクトが格納されています。各Studentオブジェクトには変数があります(リンクされたリストは実装済みリストではありません)。単一リンクリスト(繰り返し)のノードに格納されたオブジェクトの特定の変数にアクセスする方法

オブジェクトの配列を反復する方法と似ていると思われますが、それはforループを使用します。ノードとその次の&データ値を扱うリンクリストをトラバースするには。

私は2つのアイデアをどのように組み合わせるかについて完全にはわかりません。私はそれがまったくばかげた単純なものか、まったく違うアプローチがあります。

import java.util.scanner; 

public class StudentNode extends Student 
{ 
private Student data; 
private StudentNode next; 


class SinglyLinkedList 
{ 

private StudentNode first; 

//constructor 
public SinglyLinkedList() 
{ 
    first=null; 
} 


public addToList(Student newData) 
{ 
    StudentNode newNode= new StudentNode(); 
    newNode.data=newData; 
    newNode.next=first; //refs to the element first is currently pointing to 
    first=newNode;//first now refs to added element 
}   

public courseMark(Student data) 
{ 
    double cm=courseMark(StudentNode.data); 
    return "Student number : "+stuNum +"Course Mark: "+cm; 

} 



public double classAverage(Student data) 
{ 
//traverses linked list, not enirely sure about how to access the course mark 
    double classAvg=0; 
    double sum = 0; 
    int i=0; 
    StudentNode current = first; 
    StudentNode previous = null; 
    while (current != null) 
    { 
     i++; 
     StudentNode current= Student.courseMark(); 
     sum += current.data;//not sure bout course mark access 
     previous = current; 
     current = current.next; 
    } 
    return classAvg=sum/i; 
    } 

次に、データコンポーネントが使用するStudentクラスを示します。答える必要があるかどうかは不明です。

public class Student 
{ 
private String name; 
private String stuNum; 
private int firstTest; 
private int secondTest; 
private int thirdTest; 

public Student(String n,String sN,int fT,int sT,int tT) 
{ 
    name=n; 
    stuName=sN; 
    firstTest=fT; 
    secondTest=sT; 
    thirsTest=tT; 
} 

//setters 
public void setName(String n) 
{ 
    name=n; 
}  

public void setStuNum(String sN) 
{ 
    stuNum=sN; 
} 

public void setFirstTest(int fT) 
{ 
    firstTest=fT; 
} 

public void setSecondTest(int sT) 
{ 
    secondTest=sT; 
} 

public void setThirdTest(int tT) 
{ 
    thirdTest=tT; 
} 

//getters 

public String getName() 
{ 
    return name; 
} 

public String getStuNum() 
{ 
    return stuNum; 
} 

public int getFirstTest() 
{ 
    return firstTest; 
} 

public int getSecondTest() 
{ 
    return secondTest; 
} 

public int getThirdTest() 
{ 
    return thirdTest; 
} 

//course mark computer 

public double courseMark() 
{ 
    double crseMark=(firstTest*0.25)+(secondTest*0.25)+(thirdTest*0.50); 
    return crseMark; 
} 

}

+0

あなたは 'java.util.LinkedList 'クラスを再発明しています。あなた自身のリンクリストを書く必要がありますか?そうでない場合は、ライブラリクラスを使用します。リンクされたリストの実装を書くことがコースワークの一部である場合は、これがカバーされるので、教科書と講義ノートを勉強する必要があります。あなたは 'Iterable'と' Iterator'を勉強しましたか?これらは、リストを扱うための重要な概念です。 –

答えて

1

あなたはcourseMarkを取得するために、生徒データからノードへ移動しなければなりません。

while (current != null) { ... double courseMark = current.data.courseMark(); ... }

+0

ありがとうございました。私はcurrent.data.courseMarkをやっていることを考えていました。しかし、それは変わったように見えました。それが許されるかどうかはわかりませんでした。 – DinoMeme

関連する問題