简体   繁体   English

我正在获取java.lang.NullPointerException

[英]I am getting java.lang.NullPointerException

I have a class that implements the smithWaterman Algorithm at the bottom i have decided to put the main and print it out in a GUI the matrix. 我有一个在底部实现了smithWaterman算法的类,我决定将其放置并在GUI的矩阵中打印出来。 I keep getting NullPointerException. 我不断收到NullPointerException。 I do not know how to fix it, does any one see the error? 我不知道该如何解决,有人看到错误了吗? thank you. 谢谢。

    package main;

    import java.util.*;
    import java.util.*;
    import java.applet.Applet;
    import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.List;
    import java.lang.Math;
    import javax.swing.DefaultListModel;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.JTextPane;
    import javax.swing.ListModel;
    import javax.swing.table.AbstractTableModel;
    import javax.swing.table.TableColumn;
    import javax.swing.table.TableModel;
    import java.lang.Math;

    /**
     * Smith-Waterman Algorithm:
     * 
     * @author Jomana Sherif Final Project SE 165 Fall2012
     */
    public class smithWaterman2 {

        // Initializing the two array lists of the input
        StringBuffer store1 = new StringBuffer(0);
        StringBuffer store2 = new StringBuffer(0);
        String input1 = null;
        String input2 = null;
        double cell[][];
        double matchValue = 1.0;
        double misMatchValue = -0.3;
        double diagonal = 0.0;
        double gapValue = 0.3;
        double max = 0.0;
        int maxacross = 0;
        int maxdown = 0;

        /**
         * Print Matrix
         * 
         * @param args
         */
        public void printMatrix() {
            System.out.print(" | ");
            for (int i = 0; i < input2.length(); i++) {
                System.out.print(input2.charAt(i) + "  | ");

            }
            System.out.println("  ");
            for (int across = 0; across < input1.length(); across++) {

                for (int down = 0; down < input2.length(); down++) {
                    if (down == 0) {
                        System.out.print(input1.charAt(across) + "|");
                    }
                    System.out.printf("%1$.1f", cell[across][down]);

                    System.out.print(" |");
                }
                System.out.println(" ");
            }

        }

        public void generate() {
            /**
             * Creating the NxN matrix
             * 
             * @param args
             */

            cell = new double[input1.length()][input2.length()];

            /**
             * Computation
             * 
             * @param args
             */
            for (int across = 0; across < input1.length(); across++) {
                for (int down = 0; down < input2.length(); down++) {
                    // Factor 1-3 goes here

                    /**
                     * Factor 1
                     */
                    double match = 0.0;
                    double f2 = 0.0;
                    double f3 = 0.0;

                    if (input1.charAt(across) == (input2.charAt(down))) {
                        match = matchValue;

                    } else {
                        match = misMatchValue;
                    }
                    // diagonal
                    if (across < 1 || down < 1) {
                        diagonal = 0;
                    } else {
                        diagonal = cell[across - 1][down - 1];
                    }
                    double f1 = diagonal + match;

                    /**
                     * Factor 2
                     */
                    for (int k = across - 1; k >= 0; k--) {
                        if (cell[k][down] != 0) {
                            f2 = cell[k][down] - (gapValue * (across - k));
                        }
                    }
                    /**
                     * Factor 3
                     */
                    for (int l = down - 1; l >= 0; l--) {
                        if (cell[across][l] != 0) {
                            f3 = cell[across][l] - (gapValue * (down - l));
                        }

                    }
                    double cellValue = Math.max(Math.max(Math.max(f1, f2), f3), 0);
                    cell[across][down] = cellValue;
                    if (cellValue >= max) {
                        max = cellValue;
                        maxacross = across;
                        maxdown = down;
                    }

                }

            }
            System.out.println("Max equals:" + max);
            System.out.println("Max down:" + maxacross);
            System.out.println("Max across:" + maxdown);

        }

        /**
         * Optimal Solution Calculation
         */
        public void optimal() {

            int x = maxacross;
            int y = maxdown;
            // starting from the max
            store1.append(input1.charAt(x));
            store2.append(input2.charAt(y));

            while (x > 0 && y > 0) {

                double left = cell[x - 1][y];
                double diagonal = cell[x - 1][y - 1];
                double up = cell[x][y - 1];
                if (left <= diagonal && up <= diagonal) {
                    x = x - 1;
                    y = y - 1;
                    store1.append(input1.charAt(x));
                    store2.append(input2.charAt(y));
                } else if (left >= diagonal && left >= up) {
                    x = x - 1;
                    y = y;
                    store1.append(input1.charAt(x));
                    store2.append('-');
                } else if (up >= diagonal && left <= up) {
                    x = x;
                    y = y - 1;
                    store1.append('-');
                    store2.append(input2.charAt(y));
                }

            }
            store1.reverse();
            store2.reverse();
            System.out.println("store1:" + store1);
            System.out.println("store2:" + store2);

        }

        /**
         * Main Method
         */

        public static void main(String[] args) {

            smithWaterman2 sw = new smithWaterman2();
            sw.generate();
            sw.printMatrix();
            sw.optimal();


        }
    }

input2 is null, but your first call in generate method is: input2为null,但您在generate方法中的第一个调用是:

cell = new double[input1.length()][input2.length()];

You are calling input2.length(); 您正在调用input2.length(); when you try to do any operation on null pointer, it results in NullPointerExceptipon . 当您尝试对空指针执行任何操作时,将导致NullPointerExceptipon

Lot of places your code is prone to NullPointerException . 您的代码在很多地方都容易发生NullPointerException Make sure when you call any operations, reference is not null . 确保在调用任何操作时reference都不为null

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 为什么我要为String数组获取java.lang.NullPointerException? - Why am I getting java.lang.NullPointerException for a String array? 为什么我得到:java.lang.NullPointerException? - why I am getting : java.lang.NullPointerException? 不知道为什么我得到java.lang.NullPointerException - Not sure why I am getting java.lang.NullPointerException 获取java.lang.NullPointerException - Getting java.lang.NullPointerException 获取 java.lang.NullPointerException - Getting java.lang.NullPointerException 为什么我收到“错误500:java.lang.NullPointerException” Java Servlet - Why am i getting a “Error 500: java.lang.NullPointerException” java servlets 当我尝试在Studio中切换活动时,为什么会收到java.lang.NullPointerException错误? - Why am I getting a java.lang.NullPointerException error when I try to switch activities in studio? 从 groovy 脚本调用方法时,我在 Jenkisn 上收到 java.lang.NullPointerException - I am getting java.lang.NullPointerException on Jenkisn while calling method from groovy script 使用 Apache POI 时出现 java.lang.NullPointerException - I am getting a java.lang.NullPointerException when using Apache POI 我收到此错误“无法启动 bean 'documentationPluginsBootstrapper';嵌套异常是 java.lang.NullPointerException” - I am getting this error "Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException"
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM