I have a 2d array made up of columns and rows and when computed it builds a matrix or the values in the matrix but the problem is that my text area is displaying only my final result in my 2d array and not all the others but in my console in netbeans it does display all the values How may I change my code to enable this.Below are the pieces that I think is where the problem is coming. Thank you
我有一个由列和行组成的二维数组,在计算时它会构建一个矩阵或矩阵中的值,但问题是我的文本区域只在我的2d数组中显示我的最终结果而不是所有其他的但在我的netbeans中的控制台显示所有值我如何更改我的代码以启用此功能。我认为问题来自哪些部分。谢谢
This is in my actionperform button to display the
这是在我的actionperform按钮中显示的
for (int i =0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix_tf.setText(String.valueOf(matrix[i][j]));
and this is the code to compute my matrix
这是计算我的矩阵的代码
private void build_matrix() {
String seq1 = sequence1_tf.getText();
String seq2 = sequence2_tf.getText();
int r, c, ins, sub, del;
rows = seq1.length();
cols = seq2.length();
matrix = new int [rows][cols];
// initiate first row
for (c = 0; c < cols; c++)
matrix[0][c] = 0;
// keep track of the maximum score
max_row = max_col = max_score = 0;
// calculates the similarity matrix (row-wise)
for (r = 1; r < rows; r++)
{
// initiate first column
matrix[r][0] = 0;
for (c = 1; c < cols; c++)
{
sub = matrix[r-1][c-1] + scoreSubstitution(seq1.charAt(r),seq2.charAt(c));
ins = matrix[r][c-1] + scoreInsertion(seq2.charAt(c));
del = matrix[r-1][c] + scoreDeletion(seq1.charAt(r));
// choose the greatest
matrix[r][c] = max (ins, sub, del, 0);
if (matrix[r][c] > max_score)
{
// keep track of the maximum score
max_score = matrix[r][c];
max_row = r; max_col = c;
}
}
}
}
2 个解决方案
#1
0
In this loop :
在这个循环中:
for (int i =0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix_tf.setText(String.valueOf(matrix[i][j]));
you set the text of your field on each iteration (setting the text overwrites the prvioues one). Try concatenating your texts :
你在每次迭代时设置字段的文本(设置文本会覆盖prvitoues一个)。尝试连接您的文本:
for (int i =0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix_tf.setText(matrix_tf.getText() + " " + String.valueOf(matrix[i][j]));
If you are using a text area (and not a text field) use append as @Sujay suggested
如果您使用的是文本区域(而不是文本字段),请使用附加为@Sujay建议
#2
0
As its name and its javadoc indicates, setText()
sets the text of the text area to the given String argument. It doesn't append the text.
正如其名称及其javadoc所示,setText()将文本区域的文本设置为给定的String参数。它不附加文本。
Use a StringBuilder to concatenate the various matrix elements to a String, and the set the text of the text area with the complete result:
使用StringBuilder将各种矩阵元素连接到String,并使用完整结果设置文本区域的文本:
StringBuilder sb = new StringBuilder();
for (int i =0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
sb.append(String.valueOf(matrix[i][j]));
sb.append(' ');
}
sb.append('\n');
}
textArea.setText(sb.toString());
#1
0
In this loop :
在这个循环中:
for (int i =0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix_tf.setText(String.valueOf(matrix[i][j]));
you set the text of your field on each iteration (setting the text overwrites the prvioues one). Try concatenating your texts :
你在每次迭代时设置字段的文本(设置文本会覆盖prvitoues一个)。尝试连接您的文本:
for (int i =0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix_tf.setText(matrix_tf.getText() + " " + String.valueOf(matrix[i][j]));
If you are using a text area (and not a text field) use append as @Sujay suggested
如果您使用的是文本区域(而不是文本字段),请使用附加为@Sujay建议
#2
0
As its name and its javadoc indicates, setText()
sets the text of the text area to the given String argument. It doesn't append the text.
正如其名称及其javadoc所示,setText()将文本区域的文本设置为给定的String参数。它不附加文本。
Use a StringBuilder to concatenate the various matrix elements to a String, and the set the text of the text area with the complete result:
使用StringBuilder将各种矩阵元素连接到String,并使用完整结果设置文本区域的文本:
StringBuilder sb = new StringBuilder();
for (int i =0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
sb.append(String.valueOf(matrix[i][j]));
sb.append(' ');
}
sb.append('\n');
}
textArea.setText(sb.toString());