Java 主错误空指针异常/无法在命令行中运行

Java 主错误空指针异常/无法在命令行中运行,java,nullpointerexception,Java,Nullpointerexception,我正在创建一个程序,该程序应该在命令行中询问用户希望使用SHell排序方法对什么进行排序 我创建了shell排序方法,但在尝试运行它时,我遇到了一个错误 我在使用friends windows客户端时验证了这一点,但仍然无法运行 公共类客户端{ 公共静态void main(字符串参数[]){ //获取数据集的文件名和运行次数 //对于来自命令行的数据集 //从命令行读取N个随机双精度文件,然后 //在数组中存储数据[] //为此数据集构建i n c r e m e n t s e q u e

我正在创建一个程序,该程序应该在命令行中询问用户希望使用SHell排序方法对什么进行排序

我创建了shell排序方法,但在尝试运行它时,我遇到了一个错误

我在使用friends windows客户端时验证了这一点,但仍然无法运行

公共类客户端{
公共静态void main(字符串参数[]){
//获取数据集的文件名和运行次数
//对于来自命令行的数据集
//从命令行读取N个随机双精度文件,然后
//在数组中存储数据[]
//为此数据集构建i n c r e m e n t s e q u e n c e阵列
//基于h[k]0的数组的上限值){
ShellSort研究=新的ShellSort(数据);
双启动=System.nanoTime();
研究:sortUsing(h1);
double duration1=System.nanoTime()-开始;
start=System.nanoTime();study.sortUsing(h2);
double duration2=System.nanoTime()-start;
start=System.nanoTime();study.sortUsing(h3);
double duration3=System.nanoTime()-start;
start=System.nanoTime();study.sortUsing(h4);
double duration4=System.nanoTime()-start;
//显示至少从
}
n--;
}

}
因为您没有在数组中填充可比数据。它们被设置为空,这就是为什么你得到NLP

因为:

 Comparable data[] = new Comparable[1000];
包含值为null的所有元素,因为它是对象 所以实际上,比如说:

  data[0] = null
  .
  .
  .
  data[999] = null;
调用此方法时:

 private boolean less(Comparable v, Comparable w) {
        return (v.compareTo(w) < 0);
    }
private boolean less(可比v,可比w){
返回值(v.compareTo(w)<0);
}

您正在以null形式传递参数,当您在null上调用某些内容时,您会得到NullPointerException。

NPE在哪里?
NPE在ShellSort.less(ShellSort.java:50)在ShellSort.sortUsing(ShellSort.java:36)在client.main(client.java:29)在线程“main”中出现异常是哪一行?你希望我们计算出来吗?可比数据[]=新的可比数据[1000];这将使用所有空值初始化数组。i、 e.数据[0],…数据[999]为空。如果您希望它有一些非空值,则必须对其进行初始化。。。但每次我尝试在命令行中运行它时,收到的错误是“错误:无法找到或加载主类client.java”