我是Java的初学者,我需要帮助。我正在尝试在Jtextarea中打印一个矩阵。但是我不知道如何将矩阵转换为字符串以在Jtextarea中打印。我正在尝试使用matrica.get(i)
,但我不知道如何将其用于矩阵。还是还有其他可能性?有人可以帮我吗?
在这里我填充矩阵:
public void fillMatricen(){
for (int i =0; i<x; i++){
for (int j=0; j<y; j++){
matrica[i][j]=(int) ((double) Math.random()*10);
}
}
}
在这里我试图打印它:
public void actionPerformed(ActionEvent event){
String row1 = inrows.getText();
int row2 = Integer.parseInt(row1);
String col1 = incolumns.getText();
int col2 = Integer.parseInt(col1);
fillMatricen();
for( int i=0; i<row2; i++){
for( int j=0; j<col2; j++){
matricaString= matricaString + matrica.get(i);
}
}
matric.setText(matricaString);
}
替换此行
matricaString = matricaString + matrica.get(i);
matricaString += matrica[i][j];
出现在fillMatricen
中,matrica
是数组的数组。因此,您不能使用任何get
方法从matrica
访问元素。
我不知道您的数据类型是什么,但是Java Collection通常具有toString()方法,可以自行打印自己。我个人不喜欢显示该输出,因为它具有一堆对人类不吸引人的括号。
一种简单的方法是使用String.Format(FormatString,obj)循环浏览数据;并将这些件添加到StringBuffer中(使用StringBuffer.Append())。然后在StringBuffer上进行to绳以将其放入JTEXTAREA中。您甚至可以将HTML标签添加到文本中,以便以表格形式显示您的数据。
尝试以下:
public void actionPerformed(ActionEvent event){
String row1 = inrows.getText();
int row2 = Integer.parseInt(row1);
String col1 = incolumns.getText();
int col2 = Integer.parseInt(col1);
fillMatricen(row2, col2);
String matricaString = '';
for( int i=0; i<row2; i++){
for( int j=0; j<col2; j++){
matricaString += matrica[i][j] + " ";
}
matricaString += "n"
}
matric.setText(matricaString);
}
public void fillMatricen(int x, int y){
for (int i =0; i<x; i++){
for (int j=0; j<y; j++){
matrica[i][j]=(int) ((double) Math.random()*10);
}
}
}
这效果很好:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.awt.*;
public class ConvertMatrix extends JFrame implements ActionListener{
JLabel rows = new JLabel ("Numri i rreshtave"+'n');
JTextField inrows = new JTextField (5);
JLabel columns = new JLabel ("Numri i kolonave eshte");
JTextField incolumns = new JTextField (5);
JLabel matrix = new JLabel("Matrica ka formen");
JTextField inmatrix = new JTextField(30);
JButton mat = new JButton("Afisho matricen");
JTextArea matric = new JTextArea(10,21);
int x;
int y;
double[][] matrica;
public ConvertMatrix (){
super ("Matrica e konvertuar");
setSize(300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
Container content = getContentPane();
content.setLayout(new FlowLayout ());
content.setBackground(Color.pink);
content.add(rows);
rows.setForeground(Color.blue);
content.add(inrows);
content.add(columns);
columns.setForeground(Color.red);
content.add(incolumns);
content.add(matrix);
content.add(inmatrix);
matrix.setForeground(Color.gray );
content.add(mat);
content.add(matric);
mat.addActionListener(this);
setContentPane(content);
}
public void mbushMatricen(int x, int y){
matrica = new double[x][y];
for (int i =0; i<x; i++){
for (int j=0; j<y; j++){
matrica[i][j]=((double) Math.random()*10);
}
}
}
public void actionPerformed(ActionEvent event){
String rresht = inrows.getText();
int rreshtii = Integer.parseInt(rresht);//kthimi i stringut ne integer
String shtyll = incolumns.getText();
int shtylle = Integer.parseInt(shtyll);
mbushMatricen(rreshtii,shtylle);
String matricaString = "";
for(int i=0; i<rreshtii; i++){
for( int j=0; j<shtylle; j++){
matricaString += matrica[i][j] + " ";
}
matricaString += "n";
}
matric.setText(matricaString);
}
public static void main(String []args){
ConvertMatrix m = new ConvertMatrix();
}
}