2

メソッドExammarkを持つプログラムを作成しようとしています。これには、生徒クラスのオブジェクトと生徒に名前を付ける文字列が含まれています。メソッドは、生徒の試験マークとその名前を返す必要があります。ジョーと呼ばれる生徒がいて、その試験のスコアが32の場合、ジョーが合格すると32が印刷されます。

学生クラスにはゲッターがあり、getexamscoreにはゲッターがあり、サブクラスにはゲッターgetpupilnameがあります。ベクトル要素は瞳孔クラスにある必要があります。

生徒がクラスに属していない場合は、-1を返す必要があります。

これが私の方法であり、すべてがこの方法にのみ含まれている必要があります。

import java.util.*;
public class vectors
{
   public int lookforMark(Vector <pupil> v, String name)
   {
       int examscoremark=0;
       name="";
       try{

           for(int i=0; i<=v.size(); i++){
               try
               {
                  int element= v.elementAt(i).getexamscore();
                  String element2= v.elementAt(i).getpupilname();


               }
               catch(Exception e)
               {
                   System.out.println("there is an error");
                   return -1;
               }  
            }
        }

誰かが生徒の名前で試験マークを返すのを手伝ってもらえますか?

4

5 に答える 5

2

setMark瞳孔にメソッドを作成できます。

または、名前とマークを保持するオブジェクトを作成し、それを返します。

public class ExamMark {
    private final String name;
    private final int mark;

    public ExamMark(String name, int mark){
        this.name = name;
        this.mark = mark;
    }

    public String getName(){
        return name;
    }

    public int getMark(){
        return mark;
    }
}

次のように使用します。

return new ExamMark(v.elementAt(i).getpupilname(), v.elementAt(i).getexamscore());
于 2012-04-26T09:23:46.010 に答える
1

この質問には 2 つの答えがあります。

  1. クラスを使用しPair<E,K>ます。Google経由で利用できるものがいくつかあります。これがショートカットです。
  2. 返す情報に固有の保持オブジェクトを作成します。これはよりクリーンな方法であり、通常は優先されます。
于 2012-04-26T09:24:38.583 に答える
1

あなたは具体的にそれを言った

学生クラスにはgetterがあり、getexamscoreとサブクラスにはgetter getpupilnameがあります。ベクトル要素は生徒クラスにある必要があります。

その結果、追加のラッパー クラスは必要ありません。int を返す代わりに、このような生徒オブジェクトを返します

public pupil lookforMark(Vector <pupil> v, String name) {
      for(int i = 0; i < v.size(); i++)
         if(v.elementAt(i).getpupilname().equals(name))
            return v.elementAt(i);
      return null;
}

そのように簡単です。これで、生徒は名前と成績を保持します。

その後の編集: for ループの誤りを修正しました。

于 2012-04-26T09:48:09.277 に答える
0

List または Map を使用する方が良いのですが、ベクトルはパフォーマンスを低下させますか?

ユーザーと瞳孔オブジェクトを持つクラス結果を作成し、キーをユーザーとしてハッシュマップを初期化し、値が結果オブジェクトになります。

マップ userMap = new HashMap();

public Result getUserMarks(String user){

Result result = userMap.get(user);  

    return result;
}
于 2012-04-26T09:40:28.697 に答える
0

一度に 2 つのオブジェクトを返す最良の方法は、これらの 2 つのオブジェクトを、2 つの値を含むことができる標準の Java オブジェクトでラップすることです。これは のオブジェクトになりますMap.Entry<T1, T2>。このようなオブジェクトを作成するには、次を使用します。

new AbstractMap.SimpleEntry<T1, T2>(value1, value2);

だからあなたの場合new AbstractMap.SimpleEntry<Integer, String>(mark, name);

于 2016-01-13T10:04:29.267 に答える