空指针异常导致运行时错误

克里希纳(Krishna Chalise)

我正在Linux机器Ubuntu 14.04上编程。其他技术规格为:

机器: Ubuntu-14.04 LTS
JDK: JDK-8(Java EE应用程序)Web
服务器: Apache Tomcat

下面给出的Java代码将引发Null Pointer Exception。错误消息如下所示:

devkrishna@krishna:~/Desktop/Java/project1$ java attempt
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
Exception in thread "main" java.lang.NullPointerException
    at attempt.main(project1.java:85)

第85行是(op [i] .get();)

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


class Root{
    public int no=0;
    public String bookNo;
    public String book;
    public String author;
    RandomAccessFile outs;
    public void get(){
        try{
            DataInputStream in = new DataInputStream(System.in);
            System.out.println("\n");
            System.out.print("Enter book no. : ");
            bookNo = in.readLine();
            no = Integer.parseInt(bookNo);
            System.out.print("Enter the book name: ");
            book = in.readLine();
            System.out.print("Enter author's name: ");
            author = in.readLine();

        }
        catch(IOException e){
            System.out.println("I/O EXCEPTION !!!");
            System.exit(1);
        }
    }
    public void processFile(){
        try{
            outs = new RandomAccessFile("output.dat","rw");
            outs.seek(outs.length());
            outs.writeBytes(bookNo);
            outs.writeBytes("\t \t \t");
            outs.writeBytes(book);
            outs.writeBytes("\t \t \t");
            outs.writeBytes(author);
            outs.writeBytes("\n");
            outs.close();
        }
        catch(IOException e){
            System.out.println("FILE I/O ERROR !!!");
        }
    }
    public void tell(){
        try{
            System.out.println("\n");
            System.out.println("Book no. : " + bookNo);
            System.out.println("Book name: " + book);
            System.out.println("Author: " + author);
            System.out.println("\n");
        }
        catch(Exception e){
            System.out.println("EXCEPTION !!!");
        }
    }
}

class attempt{
    public static void main(String[] args){
        Root op[] = new Root[5];
        for(int i=0;i < 5; i++){
            op[i].get();
            op[i].processFile();
            op[i].tell();
        }
    }
}

在的内部主要方法中实现此方法class Attempt

for(int i=0;i < 5; i++){
    op[i] = new Root(); // here
    op[i].get();
    op[i].processFile();
    op[i].tell();
}

引发编译错误:

devkrishna@krishna:~/Desktop/Java/project1$ javac project1.java
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar 
project1.java:85: error: ']' expected
                Root op[i]=new Root();
                    ^
project1.java:85: error: illegal start of expression
                Root op[i]=new Root();
                     ^
2 errors
美娜

您正在初始化Root数组而不初始化其元素。

op[i].getnull用于每个对象i,并且对其调用任何方法都将抛出一个NullPointerException

一个简单的成语是:

for(int i=0;i < 5; i++){
    op[i] = new Root(); // here
    op[i].get();
    op[i].processFile();
    op[i].tell();
}

丑陋的内联替代方法是:

Root op[] = new Root[]{new Root(),new Root(),new Root(),new Root(),new Root()};

另一个丑陋的内联替代品:

Root[] op = {new Root(),new Root(),new Root(),new Root(),new Root()};

最后,java.util.Arrays该类具有一个更漂亮的fill方法:

Root op[] = new Root[5];
java.util.Arrays.fill(op, new Root());

但是,这将用相同的实例而不是每个元素一个实例填充数组,这可能不是您想要的结果。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

空指针运行时异常

在 Android Studio 中使用 ListView 时出现运行时错误(空指针异常)

空指针运行时异常erorr,但为什么呢?

执行可运行时的空指针异常

为什么我一运行我的应用程序就会在运行时收到空指针异常错误,它会崩溃?

当整个Maven项目在junit测试下运行时,logger.info引发空指针异常

为什么此Typescript接口在运行时捆绑中导致空异常?

变量 'loginusername' 在被赋值之前使用。运行时可能会导致空引用异常

由于NSManagedObjectContextObjectsDidChangeNotification而导致的运行时错误

cin导致运行时错误

Else 语句导致运行时错误

运行时错误-非零异常

C 分配字符数组导致错误访问运行时异常

全局错误捕获,以防止运行时异常导致程序崩溃

尝试在Android中创建倒数计时器时出现运行时异常和空指针异常

如何修复运行时错误:加载'const char类型的空指针

运行时错误:“TreeNode”类型的空指针内的成员访问

运行时错误:引用绑定到“int”类型的空指针(合并函数)

删除指向指针的指针是运行时错误吗?

Proguard导致Android导航组件出现运行时异常

调用Device.RuntimePlatform会导致运行时异常

SQLite连接类中的函数导致运行时异常

警告变量“csCryptoStream”在被赋值之前被使用。运行时可能会导致空引用异常

运行时强制关闭应用程序,LogCat 致命异常错误导致类 RecyclerView 膨胀

C ++中的指针和运行时错误

取消引用char指针运行时错误

重新分配无效的指针运行时错误

代码中的trs导致运行时错误

Java:对象创建导致运行时错误