变量在构造函数中定义但抛出 NullPointerexception

拉扎海德尔

我是 Java 新手,我正在练习字符串,但是当我运行它时,它会抛出 NullPointeException

我已经定义了一个构造函数,它的值为 String s1,stopCodon,startCodon。
它需要 s1 的值,但不是 stopCodon,startCodon
当我将值放入实例变量时它工作正常请稍微解释一下,以便它帮助我......

/* package codechef; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Codechef
{   
        String s1;
        String startCodon;
        String stopCodon;
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here
        //String s1;
        //String startCodon;
        //String stopCodon;
        Codechef test1 = new Codechef();
        test1.testSimpleGene();
    }
     public void testSimpleGene(){
           System.out.println("Gene Strand is = " + s1); 
           System.out.println("Gene1 is = " + findSimpleGene(s1));
           System.out.println("Gene2 is = " + findSimpleGene(s1,startCodon,stopCodon));
     }
     private String findSimpleGene(String dna,String x,String y){
           String dnaResult  = "";
           int startIndex = dna.toUpperCase().indexOf(x);
           if (startIndex == -1){
               return "";            
            }
           int stopIndex = dna.toUpperCase().indexOf(y,startIndex+3);
           if (stopIndex == -1){
               return "";            
            } 
           //System.out.println(startIndex +" Part2 "+ (stopIndex));   
            if((stopIndex - startIndex)%3 == 0){
            dnaResult = dna.substring(startIndex,stopIndex+3);
           }
           return dnaResult;
        }
        public String findSimpleGene(String dna){
           String dnaResult  = "";
           int startIndex = dna.indexOf(startCodon);
           if (startIndex == -1){
               return "";            
            }
            int stopIndex = dna.indexOf(stopCodon,startIndex+3);
           if (stopIndex == -1){
               return "";            
            } 
          //System.out.println(startIndex +" "+ (stopIndex));   
            if((stopIndex - startIndex)%3 == 0){
            dnaResult = dna.substring(startIndex,stopIndex+3);
        }
           return dnaResult;
        }
        Codechef(){
        String s1 = "taaatg";
        String startCodon = "TAA";
        String stopCodon  = "ATG";
        }
    }

错误

    at Codechef.findSimpleGene(Main.java:45)
    at Codechef.testSimpleGene(Main.java:24)
    at Codechef.main(Main.java:20)```
达伍德·伊本·卡里姆

将构造函数更改为如下所示。

public Codechef(){
    s1 = "taaatg";
    startCodon = "TAA";
    stopCodon  = "ATG";
}

通过String在每一行的开头添加单词,您实际上是在构造函数中声明了局部变量。您不希望这样,因为您想使用对象中的字段,而不是使用其他变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章