2015-11-27 3 views
0

Я пытаюсь создать матрицу с комплексными числами в Java. После компиляции программа запоминает в каждом v [i] [j] только последнее чтение реального или. мнимой части .. Я думаю, что это связано с предупреждением «Статическое поле Matrix.im (/Matrix.re) должно быть доступно статическим образом», но я действительно не знаю, что это значит ... Я что-то новое в Java, что я делаю неправильно? Благодаря!^-^Создание матрицы с комплексными числами

import java.util.Scanner; 
    public class Matrix { 
    public static double im,re; 

    public Matrix(double re, double im) 
    { 
     this.re=re; 
     this.im=im; 
    } 


     public static void main(String[] args) 
     { 
      int n,m,i,j; 
      double x,y; 
      Scanner sc=new Scanner(System.in); 
      n=sc.nextInt(); 
      m=sc.nextInt(); 
      Matrix[][] v= new Matrix[n][m]; 
      for(i=0;i<n;i++) 
       for(j=0;j<m;j++) 
        { 
         x=sc.nextDouble(); 
         y=sc.nextDouble(); 
         v[i][j]=new Matrix(x,y); 
       } 
     for(i=0;i<n;i++) 
     { 
      for(j=0;j<m;j++) 
       System.out.print(v[i][j].re+"+i*"+v[i][j].im+" "); 
      System.out.println(); 

     } 
    } 
} 
+2

Просьба уточнить ваш вопрос, это очень запутанно, что именно вы спрашиваете – andrewdleach

ответ

0

Вы стреляли в ногу своими статическими полями. Изменить это:

public static double im,re; 

к этому:

public double im,re; 

Или лучше:

private double im,re; 

С соответствующими добытчиками и, возможно, сеттеры, если класс является изменяемым.

Пожалуйста, обратите внимание, что статические поля являются полями в класса а не экземпляр, и поэтому каждый экземпляр матрица будет содержать то же значение для этих полех если не делают экземпляр (не-статические) полей.

+0

Спасибо, это сработало! : D – Jules