如果:2我应该将2d下三角矩阵转换为矢量,但是没有结果,它只显示了diognal。 我尝试了很多版本。 例如,我有随机矩阵:
1 0 0
7 5 0
8 2 9
所以,我需要:
1 7 5 8 2 9
任何帮助,请????
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 :(得分:0)
您的问题是使用以下代码:
for (i=0; i<=9; i++)
for (j=0; j<=9; j++)
if (j<=i) {
B[i] = A[i][j];
}
内部循环不断覆盖相同的位置B[i]
,因此只保留复制的最后一个值(其中j == i)。
你想要更像的东西:
int k=0;
for (i=0; i<=9; i++) {
for (j=0; j<=9; j++) {
if (j<=i) {
B[k++] = A[i][j];
}
}
}