2016-02-19 3 views
-6

Может ли кто-нибудь просмотреть мой код, пожалуйста. Я м застрял: P Я хочу, чтобы вычислить эту матрицу:Матричные вычисления с java

enter image description here

import java.lang.Math; 


public class Test { 

    public static void main(String[] args) { 
    // TODO Auto-generated method stub 


     int m=8; 
     double [][] matrix =new double [m][m]; 


     for(int i=1;i<=m;){ 

      for(int j=1;j<=m;j++){ 


       switch(i=j){ 
        case 1: 
        matrix[i][j]= Math.sin(i)*Math.sin(i); 

       default: 
        matrix[i][j]= Math.sin(i)*Math.sin(j); 

       } 

       System.out.print(matrix[i][j] + " "); 
      } 
      System.out.print("\n"); 

      i++; 

    } 


    } 
} 
+4

"* я м застрял *" не является правильным описанием проблемы. (1) Как другие с той же проблемой смогут найти этот вопрос? (2) Как мы должны это понимать? Опишите конкретную проблему, с которой вы столкнулись, как ошибка/исключение/неправильный результат. – Pshemo

ответ

1

* ошибка 1 *

Java массивы начинаются с 0, так что первое изменение:

for(int i=0;i < m ; i++){ 

И, конечно, индекс массива и переменная, используемые в формуле, могут быть разными ....

так или начните цикл с 0 и используйте (i-1) в функции. или сделать массив более удобным для чтения, использование матрицы [я-1] [J-1] для запуска индексов массива на 0.

, но из-за этого:

double [][] matrix =new double [m][m]; 

вам нужно начать с индекс 0 и остановка по индексу 7 в случае т = 8

otherwhise вы получить из индекса массива за исключением

же для J конечно

* предложение 2 * приращение как я и J в для петель, делает его более удобным для чтения

for(int i=0;i < m ; i++){ 

     for(int j=0;j < m ; j++){ 
      // the code on a i,j cell 


     } 

    } 

* Ошибка 3 * и в случае, если вам нужно сделать, если (вместо выключателя?) и сравнить equalty

использование ==, а не =

if(i=j){ 

должен быть

if(i==j){ 

в этом случае необходимо учитывать:

if(i==j){ 
    // 
} else { 
    // 
} 

переключатель как:

switch(variable){ 
    case 1: 
     // in case variable is one 
     break; 
    default: 
     break; 
} 

и вы пропали без вести Разрывы

* общие предложения *

I может сказать, что я делаю вам отладки .... . Много ошибок .... за этот короткий код ....

полосы код очень простой, чтобы посмотреть, что происходит, используйте хороший инструмент для пошагового кода (IDE) ....

Я даже не запустил ваш код .... просто смотри на это ...

* IDEone.ком *

я положил это в Яви на ideone, и она работает:

http://ideone.com

import java.util.*; 
import java.lang.*; 
import java.io.*; 

class Ideone 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     int m=8; 
     double [][] matrix =new double [m][m]; 


     for(int i=1;i<=m;i++){ 

      for(int j=1;j<=m;j++){ 


       if(i==j){ 

        matrix[i-1][j-1]= Math.sin(i)*Math.sin(i); 

       }else{ 
        matrix[i-1][j-1]= Math.sin(i)*Math.sin(j); 

       } 

       System.out.print(matrix[i-1][j-1] + " "); 
      } 
      System.out.print("\n\r"); 
     } 
    } 

} 

см http://ideone.com/aZrT1x

+0

извините .... тот был в цикле for, а другой нет ... Я поменял ошибку на предложение ... –

+0

Спасибо, наконец, у меня нет исключения, но я все еще не хочу отображать первый элемент на моей матрице как 0. В противном случае я все еще не мог получить форму матрицы с помощью «System.out.print (« \ n »); . Спасибо за ваш ответ – user5953665

+0

еще нужно запустить массивы с 0 ... в коде, который вы можете использовать (i + 1) в формуле, или сохранить цикл в 1 и использовать матрицу [i-1] [j -1] –

Смежные вопросы