简体   繁体   中英

Why can't I display values of my 2d array in my text area

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

This is in my actionperform button to display the

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

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 :

 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

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.

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 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());

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM