2017-01-13 17 views
0

別のランナープログラムで呼び出された.datファイルからグレード値と名前の値を取り込もうとしています。この他のjavaファイル内のクラスは、私たちのために始めた、と私たちは、私は、エラー互換性のない型int []はint型のエラーに変換できません

Incompatible types: int[] cannot be converted to int" error for "grades[i]=g;" and the corresponding String error for "names[i]=n; 
に取得しています「... forループを使用する」

を「...両方の配列をインスタンス化」としていました

思考?

public GradeBook(int[] g, String[] n, int num) 
{ 
    // **instantiate both arrays with 'num' objects 
      String []names=new String[num]; 
      int[] grades=new int[num]; 
    //**use a for-loop to assign each name and grade with the incoming values 
      for(int i=0;i<num;i++) 
      { 
       names[i]=n; 
       grades[i]=g; 
      } 
} 
+0

クラスの完全なコードを含めてください。私はここでは反復のポイントが全く見当たらないので、入ってくる配列を割り当てて、それを使って終了してください。 –

+5

あなたは 'names [i] = n [i]; grades [i] = g [i];ただし、https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOf(int[],%20int)はより良い –

+0

@TimBiegeleisen 'num'は' n.length'とは異なる値になるかもしれません。 –

答えて

0

私はあなたの実際のコードは次のようになりますと仮定しています:

public class GradeBook { 
    private String[] names; 
    private int[] grades; 

    public GradeBook(int[] g, String[] n) { 
     names = n; 
     grades = g; 
    } 
} 

ちょうどあなたのコンストラクタで、着信成績と名前を割り当てます。呼び出し元はすでに.datファイルを読み込んでいる間に、これを処理しなければならないので、着信配列の長さについて心配する必要はありません。また、反復もここでは必要ありません。

あなたが本当にあなたのコンストラクタへの入力として渡された配列のコピーを作成する必要がある場合は、そのためのSystem.arraycopy()を使用することができます。コードが呼び出す場合にのみコピーを作成する必要があります

public class GradeBook { 
    private String[] names; 
    private int[] grades; 

    public GradeBook(int[] g, String[] n) { 
     names = new String[n.length]; 
     grades = new int[g.length]; 
     System.arraycopy(n, 0, names, 0, n.length); 
     System.arraycopy(g, 0, grades, 0, g.length); 
    } 

注意コンストラクタは後で配列を変更することも計画していました。

+0

これはコピーを作成せず、参照を割り当てます... OPがコピーかどうかわかりませんが、私はそれを指摘する価値があります - IMHO;) – MadProgrammer

+0

@MadProgrammerはい、私はこれを知っています。私はコンストラクタを呼び出すコードが '.dat'ファイルを読み込み、それを渡したと仮定しました。その配列を使用する必要はありません。 –

+0

私はOPが知って心配、あなたが知って心配してないんだけど、それは彼らが別のコピーを作成したい...かない「かもしれない」100%必ずすることは困難ですが、そのコードに基づいて、それはあるかもしれません彼らはちょうど言って、何が起こっているのかの良いアイデアを持っているので、この場合の違いを指すようにOPに役立つ;) - あなたはそれが必要だと感じていない場合は、しないでください。) – MadProgrammer

関連する問題