2016-03-08 117 views
0

案例:2我應該將2d三角形矩陣轉換爲矢量,但沒有結果,它只顯示diognal。 我嘗試了很多版本。 例如,我有隨機矩陣:2d矩陣到矢量

所以,我需要:

請幫忙嗎?

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.util.Random; 
import java.util.Scanner; 

    public class Ld { 


    public static void main(String[] args) { 
    int A[][] = new int [10][10]; // Matricas inicializaacija 
    int B[] = new int [55];   // Vektora inicializaacija 
    int C[] = new int [10];   // Vektora inicializaacija 
    int D[] = new int [10];   // Vektora inicializaacija 
    boolean mat = false;   // Mainiigaa mat defineesana ar staavokli false 
    boolean arr = false;   // Mainiigaa arr defineesana ar staavokli false 
    int searchKey;     // Mainiigaa searchKey defineesana 
    int a, i, j, c = 0; 
    String st; 
    Ld insertion = new Ld(); 
    Ld selection = new Ld(); 
    Random rnd = new Random(); 

    System.out.println("Paula Plauča RDBF09 151RDB331"); 
    System.out.println(); 

    Scanner in = new Scanner(System.in); 
    // Izvada izveelni 
     System.out.println("Masiva aizpildisana ar gadijuma vertibam  : 1"); 
     System.out.println("Masiva homogenu vertibu ierakstisana vektora : 2"); 
     System.out.println("Vektora elementa lineara algoritma meklesana : 3"); 
     System.out.println("Vektora skirosana ar iesprausanu (Insertion) : 4"); 
     System.out.println("Ja velaties iziet no sistemas nospiediet  : 0"); 

    boolean quit = false;   // Mainiigaa quit defineesana ar staavokli false 
    int menuItem; 
    do { 
      System.out.println(); 
      System.out.println("Izvelieties saskarnes vertibu : "); 
      menuItem = in.nextInt();   // Mainiigajam menuItem pieskir case veertiibu skaitu 
      switch (menuItem) { 
     // Izveelnes pirmaa punkta realizaacija. Matricas aizpildisana ar patvaliigaam veertiibaam 
      case 1: 
      for (i=0; i<=9; i++) 
       for (j=0; j<=9; j++) 
        if (j<=i) { 
         A[i][j] = rnd.nextInt(10)+1; 
        } 
      System.out.println(); 
      System.out.println(); 

      for (i=0; i<=9; i++) { 
       for (j=0; j<=9; j++) 
        System.out.print(A[i][j] + "\t"); 
       System.out.println(); 
      } mat = true; 
       break; 
     // Izveelnes otraa punkta realizaacija. Vektora aizpildisana ar patvaliigaam veertiibaam 
      case 2: 
      if (!mat){ 
       System.out.println("Sakuma nepieciesams izveidot masivu"); 
       continue; 
      } 
      for (i=0; i<=9; i++) 
       for (j=0; j<=9; j++) 
        if (j<=i) { 
         B[i] = A[i][j]; 
        } 
      System.out.print("Iegutais vektors ir : "); 
      for(int i1 = 0; i1 < B.length; i1++){ 
        System.out.print(B[i1] + " "); 
      } arr = true; 
      System.out.println(); 
      break; 

      // Pabeigt progammas darbiibu 
      case 0: 
      quit = true; 
      break;      
      default: 
       System.out.println("Ievadita nepienemama vertiba."); 
      } 
    } while (!quit); 
    in.close(); 
    System.out.println("Bye-bye!"); 

}}

回答

0

你的問題是用下面的代碼:

for (i=0; i<=9; i++) 
    for (j=0; j<=9; j++) 
     if (j<=i) { 
      B[i] = A[i][j]; 
     } 

內環保持覆蓋同一位置B[i],所以纔有了最後的值複製(其中j ==我)被保留。

你想要更多的東西一樣:

int k=0; 
for (i=0; i<=9; i++) { 
    for (j=0; j<=9; j++) { 
     if (j<=i) { 
      B[k++] = A[i][j]; 
     } 
    } 
} 
+0

OUH,非常感謝你:)我在國家隊訓練了幾個小時與插入排序 – Paula

+0

新的問題: – Paula