2017-05-21 5 views
-1

を使用して配列にデータを格納し、私は2つの異なるJavaファイルを持っている Mark.java読書と異なる.javaファイル

public class Mark 
//class'name has to be the same with file's name 
{ 
private String studentName; 
private int studentMark; 
//studentName and studentMark are private instance variables 
//which cannot be accessed by other classes 

public Mark() //a default constructor 
{studentName = "unknown"; studentMark = 0;} //giving a starting value 
public Mark(String n, int m) //a parameterised constructor 
{studentName = n; studentMark = m;} 

//2 set mthods 
public void setname (String n) 
{studentName = n;} 
public void setmark (int m) 
{studentMark = m;} 

//2 get methods 
public String getname() 
{return studentName;} 
public int getmark() 
{return studentMark;} 


//get Grade method 
public String Grade; 
//"final" means constant 
final int PASS = 50; 
final int CREDIT = 65; 
final int DISTINCTION = 75; 
final int highDISTINCTION = 85; 

{ 
    //if statement 
    if (studentMark < PASS) 
     Grade = "F"; 
    else if (studentMark < CREDIT) 
     Grade="P"; 
    else if (studentMark < DISTINCTION) 
     Grade="C"; 
    else if (studentMark < highDISTINCTION) 
     Grade="D"; 
    else 
     Grade="HD"; 
} 

public void setGrade (String g) {Grade = g;} 
public String getGrade() {return Grade;} 
} 

そしてGUI.java

import javax.swing.*; //to run JFrame 
import java.awt.*; //to run FlowLayout 
import java.awt.event.*; //to run ActionListener 
import javax.util.*; 
public class MarksGUI extends JFrame implements ActionListener 
{ 
//declare class instance variables 
String studentName = nameField.getText(); 
int studentMark = Integer.parseInt(markField.getText()); 
final int MAX_STUDENT = 10; 
//declare maximum student constant 
private Mark [] markArray = new Mark[MAX_STUDENT]; 
//declare current student variable 
private int currentStudent = 0; //to count the numbers of students from 0 to 9 
markArray[currentStudent] = new Mark (studentName, studentMark); 

    private void enterStudentNameAndMark() 
    { 

    } 

現在、私は道を見つけようとしていますその名前とマークの入力データがmark.javaを通して処理され、配列に格納されます。これを行う最も効率的な方法は何でしょうか>

+0

GUIにはさらに多くのコードが含まれていますが、質問に関連すると思われるものを投稿します –

答えて

0

もし私があなたの質問を正しいとすれば、パラメータ化されたコンストラクタが呼び出されるとすぐにメソッドを呼び出します。

配列内のコンストラクタを呼び出すと、グレードが生成されます。

または、actionPerformedメソッドでコンストラクタを呼び出すことができます。

0

まず、 "if文"をコンストラクタまたは別のprivateメソッドに移動し、それをコンストラクタに追加します。

注:

private void updateGrade(int studentMark){ 
    if (studentMark < PASS) 
     Grade = "F"; 
    else if (studentMark < CREDIT) 
     Grade="P"; 
    else if (studentMark < DISTINCTION) 
     Grade="C"; 
    else if (studentMark < highDISTINCTION) 
     Grade="D"; 
    else 
     Grade="HD"; 

} 

グレードのinitメソッドとしてコンストラクタでそれを使用しますので、publicをしないセッターでグレードを更新することを忘れないでください。

public void setmark (int m){ 
    studentMark = m; 
    updateGrade(m); 
} 
関連する問題