0

如何使用 ecllipse IDE 调试 Java 程序,该程序使用扫描仪获取输入。我在谷歌上搜索过这个,但没有找到任何合适的解决方案。问题是我在读取输入时陷入了空指针异常,所以我想调试我的程序。

这是我的程序...

package p;

import java.io.*;

import java.util.*;

import java.text.*;

import java.math.*;

import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

           int T = in.nextInt();
           int[][] ar = new int[T][];
           for(int i=0;i<T;i++){
               int n;
               {
                    n = in.nextInt();
               }
           for(int j=0;j<n;j++)
               {
                ar[i][j]=in.nextInt(); /*null pointer exception occurs here*/
               }
           }


        for(int i=0;i<T;i++)
        {   int count=0,i1,k;
            for(int j=1;j<ar[i].length;j++)
            {
                k=ar[i][j];
                for(i1=j-1; i1>=0 && k<ar[i][i1]; i--)
                    ar[i][i1+1]=ar[i][i1];
                ar[i][i1+1]=k;
                count++; 
            }
        System.out.println(count);

        }
    }
}
4

4 回答 4

1

查看有关使用 eclipse 进行调试的教程。

设置一些断点后需要进入调试模式。断点是您希望调试器停止的代码中的点,以便您可以查看当前存储在各种变量等中的内容。

于 2013-09-15T18:25:36.513 回答
1

您永远不会说(通过初始化)将有多少列ar[i][j](因此访问那些未初始化的内存块肯定会NullPointerException
为所有i行执行此操作
ar[i] = new int[colSize]

也检查这个链接

于 2013-09-15T18:25:50.170 回答
0

只需在您想要的位置放置一个断点,然后使用 Debug 运行它。程序步骤是否包含 Scanner 都没有关系。即使您遇到扫描仪状态,您只需在 concole 输入上键入一行,然后输入。程序将继续。

于 2013-09-15T18:26:44.507 回答
0

检查扫描仪的 javadoc并使用hasNext()方法确保它具有您期望的输入

于 2013-09-15T18:26:10.313 回答