2016-02-19 198 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++){ 

當然,在公式中使用的數組索引和變量可以不同....

so或者以0開始循環,並在函數中使用(i-1)。 或使所述陣列的可讀性,使用矩陣[I-1] [j-1]開始數組索引在第0

但由於這樣的:

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

需要在開始索引0和的情況下,M = 8

在索引7停止otherwhise你得到一個出數組索引異常

相同爲當然j的

*建議2 * 增量既i和j在for循環,使它更具可讀性

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; 
} 

和你錯過了休息

*一般性建議*

我可能會說我正在調試.... 。很多錯誤的......這麼短的代碼....

條代碼,非常基本的,看看會發生什麼,使用一個很好的工具逐步執行代碼(IDE)....

我甚至沒有運行你的代碼....只是看着它...

* IDEone。COM *

我把這個JAV上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

謝謝,finaly我沒有例外,但我仍然不想顯示第一個我的矩陣元素爲0。否則,我仍然無法得到矩陣的形式與「System.out.print(」\ n「);」 。提前感謝您的回覆 – user5953665

+0

仍然需要在公式中使用(i + 1)代碼中的0 ...開始數組,或者將循環保持爲1並使用矩陣[i-1] [j -1] –